24/11/2019 - Xuri (0.99.2h)
	CustomTags (DFN and JS) now supports negative int values
	Fixed an issue introduced with starting locations that would dump new characters in the middle of the ocean
	Added new uox.ini flag for choosing a random starting location for new players (from list in uox.ini)
		RANDOMSTARTINGLOCATION=0	// 0 to disable (default), 1 to enable

23/09/2018 - Xuri (0.99.2g)
	Corrected name of spell JS property AGRESSIVESPELL to AGGRESSIVESPELL
	Updated clumsy.js and level1targ.js with corrected names for aggressiveSpell and canCastAggressive JS properties, and added checks for isSafeZone region JS property
	Commented out hardcoded versions of spells that have been ported to JS

22/09/2018 - Xuri (0.99.2f)
	Some more code cleanup
	Documented temp effect cases in code
	Added SETAMMOEFFECT, SETAMMOTYPE, GETAMMOEFFECT, GETAMMOTYPE, REGIONINFO and XREGIONINFO commands to misc-cmd.js
	Additional function parameters passed as const references
	Changed RuntimeLibrary in Debug configuration in VS project file from MultiThreadedDebugDLL to MultiThreadedDebug to fix issues with unreadable characters in strings while debugging
	Fixed potential issue with checking for number of arguments in CFile_Pos()
	Merged fix for a crash issue related to the 'HOWTO command from Kitiara/UOX3
	Fixed pUser/pSock reference error in misc-cmd.js for command_BROWSE (Kitiara)
	Moved Create Food spell out to JavaScript

21/09/2018 - Xuri
	Fixed support-messages from players not being stored and displayed in GM/Counselor queues
	Added more descriptive error messages in code and JavaScript when trying to set spawner-related object properties on non-spawner objects

20/09/2018 - Xuri
	Fixed possible null pointer dereference
	Converted some C-style pointer casting to C++ style
	Added override specifier to some virtual methods that override base class virtual methods
	Some function parameters are now passed as const references as they're not being modified in the called function

19/09/2018 - Xuri
	Resolved an issue with uninitialized struct members
	Removed some redundant conditional checks
	Made the boolean part of JS function RegisterSkill( <skillnum>, <bool> ) actually work; can now be used to disable/enable JS-implemented skills
	Fixed a bug with cHTMLTemplate::Process() where the same expression was used for both branches of a ternary operator
	Various minor cleanups; removed some unused variables, addressed some potential portability issues

18/09/2018 - Xuri
	Fixed an issue with potentially undefined behaviour, where sprintf was being used with a single variable as both parameter and destination.

17/09/2018 - Xuri (0.99.2e)
	Disabled SAFESEH linker option for debug build to enable "Edit and Continue" mode in Visual Studio
	Disabled loading of PRIV tag from regions.wsc, as it is currently unused (meant for townstones) and prevents loading certain updates to regions.dfn file
	Added support for SAFEZONE tag to regions.dfn. No hostile actions are allowed within zones where this tag is set to 1
	Added combat, spellcasting, stealing and snooping checks for safe zone
	Added safe zone check to damage portion of explosion potion
	Exposed isSafeZone JS property for characters
	Updated potion.js, provocation.js and enticement.js to check for safe zones
	Updated spells in spells.dfn to include aggressive and resistable flags
	Updated dictionaries with safezone message

13/09/2018 - Xuri (0.99.2d)
	Updated version number to 0.99.2d

12/09/2018 - Xuri
	Fixed a server crash when start locations in uox.ini is empty; defaults to hardcoded location (Sweet Dreams Inn, Britain) if no start locations found

07/09/2018 - Xuri
	Fixed tooltips on containers not updating when adding/removing items

12/09/2015 - Xuri
	Added new UOX.INI setting for defining the amount of stamina lost when using the fishing skill
		FISHINGSTAMINALOSS=2	// The amount of stamina lost when using the fishing skill

10/11/2013 - Xuri (0.99.2c)
	Fixed some issues in CHandleCombat::CastSpell() and level1targ.js that stopped NPCs from casting Heal on themselves
	Added new UOX.INI settings to make hardcoded damage to armor and weapons in combat more customizable:
		WEAPONDAMAGECHANCE=17 	// Chance of weapons taking damage when attacking
		WEAPONDAMAGEMIN=0		// Minimum amount of damage a weapon takes if damaged in combat
		WEAPONDAMAGEMAX=1		// Maximum amount of damage a weapon takes if damaged in combat
		ARMORDAMAGECHANCE=25	// Chance of armor taking damage when defending
		ARMORDAMAGEMIN=0		// Minimum amount of damage armor can take if damaged in combat
		ARMORDAMAGEMAX=1		// Maximum amount of damage armor can take if damaged in combat
	Added new UOX.INI settings for adjusting combat-speed on a global scale:
		GLOBALATTACKSPEED=1 	// for adjusting speed of melee and ranged attacks globally for all chars
		NPCSPELLCASTSPEED=1 	// for adjusting the overall speed of spellcasts for NPCs (base spellcast speed determined by SPADELAY tag in NPC dfns)
	Increased the chance of NPCs attempting to cast spells instead of doing regular attacks in combat-rounds

14/11/2012 - Xuri (0.99.2b+)
	Fixed issue where DISPLAYDAMAGENUMBERS and ATTACKSPEEDFROMSTAMINA settings in UOX.INI were overwriting the DISPLAYHITMSG setting instead of their own respective settings
	Fixed a server crash in CMulHandler::CheckStaticFlag() which could crash the server when using a client-version below 7.0.9.0
	Fixed a potential server crash in cSkills::FishTarget(), which would possibly crash the server when using a client-version below 7.0.9.0

04/11/2012 - Xuri (0.99.2b)
	Fixed issue introduced in previous version where any character-specific tags starting with the letter 'B' would not be loaded correctly from the worldfiles.

03/11/2012 - Xuri (0.99.2)
	Added support for optional amount-values behind LOOT DFN-tag, and expanded PACKITEM DFN-tag to support amount for non-stackable items as well.
		Updated supported syntax goes as follows, with optional parameters shown in paranthesis:
			LOOT=lootlist
			LOOT=lootlist,amount
			LOOT=lootlist,minamount maxamount
			PACKITEM=itemid
			PACKITEM=itemid,amount
			PACKITEM=itemid,minamount maxamount
			PACKITEM=listobject
			PACKITEM=listobject,amount
			PACKITEM=listobject,minamount maxamount
	Fixed a bug in js/skill/healing.js that would stop players from being able to use skills after trying to cure poisoned characters with bandages
	Updated timers for curing and healing in js/skill/healing.js - should now take longer to heal/cure oneself with bandages than to do the same with others
	Added support for randomization in the AMOUNT DFN tag for items.
		Updated supported syntax:
			AMOUNT=amount
			AMOUNT=minamount maxamount
	Fixed an issue with corpses not having a maximum weight capacity defined; it is now set to 500 stones.
	Fixed an issue with hairs and beards not being set correctly on corpses
	UOX3 will no longer attempt to spawn items from lootlist/itemlist-entries titled "blank". These entries can be used to add some randomization.
	Fixed some incorrect values for WEIGHT-tags in dfndata/items/gear/armor/base_armor.dfn
	Fixed an issue with containers and weight, with the help of a new semi-permanent "baseWeight" property which is based on the initial weight of a spawned item.
	Added support for viewing (ISTATS-menu) and tweaking (TWEAK-menu) the new baseWeight item property
	Added new property for JS Item objects: baseWeight - should rarely if ever need to change, primarily used to fetch base weight of containers
	Added new JS command: 'FIXCONTWEIGHT - will iterate through all in-game containers and update their baseWeight (forced), weight (if empty and not already set) and weightMax (if not already set) properties
	Updated the 'INFO command with more detailed data about flags on the targeted tile
	Potentially fixed a segmentation fault in Linux by replacing JS_NewString with JS_NewStringCopyN in JSBool CBase_GetTag()
	Potentially fixed an issue with the Stone Walls/Stone Walls 2-sections of the add-menu, which could cause lengthy stalls when opened across network connections
	The MINECHECK uox.ini setting now defaults to 1 (mountains/caves/rocks only)

25/10/2012 - Xuri
	OnCollide JS event can now be triggered from character scripts. NOTE: If both item and character have scripts attached, item script takes precedence.
	Fixed an issue where some LineofSight-checks (for double-clicking items, for instance) would erroneously fail to succeed
	Lumberjacking will now check if user is in range of target both at start and end of the chopping-process (previously start only)
	Fixed an incorrectly named variable in js/server/resources/bananas.js (dragon slayer)
	Added missing NPC entries: gazerlarva (dragon slayer)
	Updated dfndata/regions/regions.dfn to disallow Mark/Recall/Gate-spells in Felucca dungeons, and added some missing brackets (dragon slayer)
	Added support for randomizing the direction an NPC will face in when spawned. To do so, use "RND" as the specified direction in their DFNs.
	A pet being ordered to attack its owner (player), or another pet under the same ownership, should no longer result in criminal charges against the player in question.
	Fixed an issue where locked down items could get removed from the multi when bouncing back on pickup-attempts
	Fixed an issue where NPCs would never leave combat with targets that were unreachable on a different floor of a building than them.
	Items with visibility value of 3 (Permanent Hidden/GM Hidden) will now not show up to players in containers
	Members of the same party should no longer become criminals from attacking one another
	Expanded the maximum amount of available regions in regions.dfn from 255 to 65535
	Minor cleanup done in various parts of the source
	Corrected weight of iron ingots in dfndata/items/skills/resources/smithing.dfn - they should now weigh 1 stone (weight=100) each.

31/03/2012 - Xuri
	Fixed an AND vs OR issue in CMulHandler::DoesStaticBlock() that caused an if-statement to behave incorrectly
	Updated LineOfSight() function with a new boolean parameter that allows LoS-checks based from the Z-level at a character's feet instead of at his head
	Added LineOfSight-checks for players (does not affect GMs) picking up/dropping items from/onto the ground, to stop an exploit with CircleOfTransparency
	When dropping an item into an invalid location, and the player is out of range of the original location where the item was picked up, it will now be dropped on the ground
	Players should now be able to use boat-planks and house-signs even while dead
	Fixed an issue introduced with the updated LoS-checks in the previous commit

24/03/2012 - Xuri
	Added several new JS Gump Methods:
		AddGumpColor( left, top, gumpID, hue ) // Adds a gump-image to the gumpstream, with a hue
		AddPictureColor( left, top, artID, hue ) // Adds a tile-picture to the gumpstream, with a hue
		AddToolTip( clilocID ) // Adds a tooltip to the previous gump-element that was added.
		AddTextEntryLimited( left, top, width, height, hue, relay, initialTextIndex, actualText, size ) // Add a text-entry gump with restriction on entry-length
		AddButtonTileArt( tL, tR, gumpIDnorm, gumpIDpush, buttonType, pageNum, buttonID, tileID, hue, tileX, tileY ) // Add a tile-picture as a part of a gump-button.
		AddXMFHTMLTok( left, top, width, height, border, scrollbar, hue, clilocnumber, clilocArgs... ); //
	Added missing script=5021 tag to the bedroll in DFNDATA/ITEMS/GEAR/provisions.dfn
	Added some script-crash protection in JS/ITEM/bedroll.js

21/03/2012 - Xuri (0.99.1)
	Futureproofed map-loading/reading code to support both UOP-wrapped and regular maps on a map-per-map basis. May not never need to, but still.
	Added new DFN-tag for creatures - "HUMAN". This now replaces the hard-coded list of "human" body IDs that is checked when playing animations, sounds, etc.
	Added "HUMAN" DFN-tag to DFNDATA/CREATURES/creatures.dfn for all male/female player bodies, the GM body and all Savage human bodies
	Added NEWBIE-tag to items in DFNDATA/ITEMS/GMMENU/gm_skins.dfn (dragon slayer)
	Added MOUNTID=0x3EC6 to CREATURE 0x2cb (Boura) in DFNDATA/CREATURES/creatures.dfn (dragon slayer)
	Added an equippable boura mount-item (for NPCs) to DFNDATA/ITEMS/MISC/equippable-mounts.dfn
	Added some more missing regions to DFNDATA/REGIONS/regions.dfn (dragon slayer)
	Added support for specifying the amount of items to add (only works for stackable items) to a container using the PACKITEM tag. Syntax: PACKITEM=itemid,amount
	Added new item to DFNDATA/ITEMS/MAGIC/reagents.dfn: bagofreagents - a bag containing 30 of each basic reagent.
	Added bagofreagents-item to Magic->Reagents portion of Add-menu in DFNDATA/ITEMS/ItemMenu.bulk.dfn
	Replaced PACKITEM-lines specifically for reagents for magery in newbie.dfn with PACKITEM=bagofreagents
	Updated JS/ITEM/axe.js to use CreateDFNItem instead of CreateBlankItem to create new logs
	Submitted some updates to some DFN/JS-files that had somehow not been committed to the CVS properly

20/03/2012 - Xuri
	Fixed weight showing up incorrectly in item-tooltips for stacks of items
	Fixed a weight-related issue by clearing the CSocket variable pSpot (pickupspot) after dropping items
	Fixed a weight-related issue by clearing the CSocket variable pSpot (pickupspot) after bouncing back items on non-valid item-pickup attempts
	Added new function void PickupBounce() in cPlayerAction.cpp to avoid having to repeat some shared code all over CPIGetItem::Handle()
	Added CSocket::SetCursorItem() and CSocket:GetCursorItem() to be used for storing temporary pointers to items held by players on the mouse-cursor
	Fixed an issue where items picked up off the ground and held on the mouse-cursor while disconnecting/being disconnected would make said items vanish permanently
	Fixed MaxWeight-value in status-gump for clients v5+ - will now reflect the actual MaxWeight calculated based on UOX.INI setting WEIGHTPERSTR
	Fixed issue where UOX3 would always try to read from mapfiles as if they were v7.0.24+ UOP-wrapped mapfiles, even in earlier clients with non-UOP-wrapped mapfiles

19/03/2012 - Xuri (0.99)
	Fixed various errors in JS/MAGIC/level1targ.js
	Added support (but no functionality) for Spellweaving, Imbuing, Mysticism and Throwing skills in code and skills.dfn)
	Updated kindling.js and added bedroll.js (original by dragon slayer, rewritten by Xuri) to support secure logouts from camping
	Updated dictionary-files with new system messages related to the camping-skill
	Added container-gump support for container items like bones and various SE/SA-related containers
	Corrected sound-effect played when dropping items into baskets of various kinds
	Made cut-up-leather and furs pileable in DFNDATA/ITEMS/SKILLS/RESOURCES/leatherworking.dfn (dragon slayer)
	Added additional lootlists for tinkerparts, instruments, tools, vegetables, clothing, reagents and potions in DFNDATA/ITEMS/lootlists.dfn (dragon slayer)
	Updated JS/ITEM/food.js so bowls, plates, etc will be left behind instead of eaten along with the food (dragon slayer)
	Added empty wooden bowls to DFNDATA/ITEMS/BUILDING/DECS/kitchen.dfn
	Updated DFNDATA/MAPS/tiles.dfn with proper height-override values for rope ladders - should be 22 not 10
	Fixed a bug where NPCs would continue following and attacking characters that turned invisible/hidden
	Players who turn invisible will now stop swinging at nearby targets in combat
	Fixed a bug where players could equip both one-hander and two-hander weapons at the same time
	Fixed a bug where newly created characters could end with two conflicting weapons equipped at the same time
	Added additional deed/boat-model IDs to "modelmulti"-list in DFNDATA/ITEMS/itemtypes.dfn to make these usable as house/boat-deeds
	Added fix to properly set the mounted-state for NPCs that spawn with a mount-item pre-equipped
	Fixed issue where there was no distance-check on Field-spells. They now use CombatMaxSpellRange setting from UOX.INI like other spells
	Fixed issue where the wrong GFX would be displayed for Field-spells aligned north/south
	Fixed issue where NPCs without fencing or swordsmanship would not be allowed to poison anyone in combat. Tough luck, spiders!
	Fixed issue with some NPCs using invalid values for POISONSTRENGTH. The valid range of poisons goes from 1 (weak) to 4 (deadly).
	Added three new sections to DFNDATA/NEWBIE/newbie.dfn - [DEFAULT ELF MALE], [DEFAULT ELF FEMALE] and [DEFAULT ALL]
	Added item and character-direction to ISTATS and CSTATS commands in JS/COMMANDS/TARGETING/gumps.js
	Fixed an issue where containers with specific MORE values were interpreted as being trapped. Trapped containers now use MOREZ instead of MORE.
	Fixed some issues with boat-movement (drifting/turning left/right, in particular) being blocked in cases where it shouldn't be
	Fixed an issue where boat-commands to drift left/right could be spammed to move boat at high speeds. Now limited to normal boat speed multiplied by 1.5
	Fixed an issue where static water tiles would block placement of boats
	Fixed Tillerman-location on large ships turned southwards
	Fixed an issue with JS/NPC/AI/stablemaster.js where, in specific circumstances, claiming stabled pets by name didn't work
	Nearby pets will now teleport along with their owner into/onto houses/boats when those are placed
	Fixed some cases in JS/MAGIC/clumsy.js where it tried to send sysmessages through sockets, to NPCs - who have no such thing
	Added torches to ProvisionerShopping shoplist in DFNDATA/ITEMS/shoplist.dfn
	Moved TurnTorward() method in JS/ITEM/axe.js to after the area resource-check, so player only turns if there is chopping to be done
	Reduced chance of creature-sounds playing slightly. The more creatures, the higher the chance a sound will play.
	Parts of movement code rewritten to solve Z-related issues (xantier)
	Fixed various other issues with the walking-code
	Removed hacky workaround for bug with NPC pathfinding leading to queues of NPCs all lined up, replaced by proper pathfinding
	Made some tweaks to various parts of the NPC pathfinding code
		Reduced default maxSteps variable in advanced pathfinding routine from 1000 steps to 500 steps for performance reasons
			The maxSteps variable will also increase/decrease depending on the type of movement the pathfinding is for
		Added a safeguard against NPCs repeatedly failing at advanced pathfinding and slowing down the server as a result. Now resets their NPCWANDERMODE on critical failures.
		Added an internal counter for NPCs called "failPath", which increases whenever the NPC is blocked from moving when server thinks it has a valid path.
			Once it reaches a certain threshold, NPC can push past a blocking character, or alternatively stop whatever it's doing (fleeing, following, etc).
		Advanced Pathfinding will now take into account characters blocking the way when generating valid paths - no more queued up NPCs in long lines!
		Enabled pathfinding in water for water-walking creatures
		NPCs that fail to pathfind while fleeing will abort fleeing and re-engage their opponent in combat
		NPCs that fail to pathfind while in combat will abort combat and enter a state of "evasion" for a short time, during which
			...Other characters wont block their movement
			...They can't be attacked
			...They won't attack anyone
			...They'll try to move back to their bounding box, if they have one
	Added some randomization in how NPCs pick their targets in combat, so not all NPCs pick the same target at the same time
	MAX_VISRANGE and DEFSOCK_RANGE increased from 15 to 18 to better deal with item-updates in higher-resolution clients
	JS events OnDeathBlow and OnDispel can now be used to override death and/or dispelling of summoned creatures (and magical fields), by returning false from the script
		Note that for OnDeathBlow overriding code means that things like fame/karma-calculations and criminal/murderer-flags and timers need to be manually set in the script
	Improvements to LineOfSight-code:
		LoS no longer checks against a hardcoded list of items, but instead uses tiledata-flags (missing flags can be overriden through tiles.dfn)
		LoS-checks will no longer be done for NPCs against targets that have visible status VT_PERMHIDDEN or VT_GHOSTHIDDED
		LoS-checks should now work more consistently - no more NPCs aggroing players through walls! (Eolirin)
			Note that this also has a benefit for server performance, as less aggroing NPCs mean less unneccesary attempts at NPC pathfinding!
	Fixed incorrect offset on upstairs door in 2-story villa in DFNDATA/HOUSE/house.dfn
	Added house-deed for Farmer's Cabin, and added this to the house-deeds itemmenu (DFNDATA\HOUSE\house.dfn and DFNDATA\ITEMS\ItemMenu.bulk.dfn)
	Added support for INVISIBLE tag for house-items in DFNDATA\HOUSE\house.dfn. Allows adding invisible items to houses.
	Added invisible wooden floor tile in second floor of 2 Story Log Cabin house to fix moving up rope ladder (DFNDATA\HOUSE\house.dfn)
	Fixed sign-placement for 2 Story Log Cabin house (DFNDATA\HOUSE\house.dfn)
	Updated methods for detecting client-versions for incoming connections, and how these are stored on the socket object
	Added support for Stygian Abyss clients (classic version only, from v6.0.14.2 to 7.0.8.2)
	Added support for High Seas clients (classic version only, from v7.0.9.0 to 7.0.15.1?)
	Added support for creation of SA-specific Gargoyle-characters if client and server support this through CLIENTFEATURES and SERVERFEATURES bits
		NOTE: Gargoyle-specific features and/or special-cases are not yet implemented! Highly experimental.
	Added support for the SA-specific map (map5.mul - Termur) to DFNDATA/MAPS/maps.dfn
	Added support for extended itemIDs (0x3FFF to 0xFFFF) used in SA and HS clients. Maximum supported depends on size of tiledata run on the server.
	Added support for reading new versions of tiledata.mul and multi.mul. No settings needed, version-handling taken care of automatically.
	Added support for New Object Information packet (0xF3) via CPNewObjectInfo packet class.
		This replaces packet 0x1A in client-versions 7.0+, and enables displaying items and multis with IDs extending beyond 0x3FFF
	Added support for packet 0xD7, SubCommand 0x28 - Guild button on paperdoll, which gives access to guild-functions if character belongs to a guild.
		Can be enabled/disabled through UOX.INI setting PAPERDOLLGUILDBUTTON=0/1. Defaults to 0.
	Updated packet 0x88 to properly show combat-status of character in paperdoll
	Updated packet 0xBA (Tracking Arrow) for HS clients - from 6 bytes to 10 bytes, to include target serial.
	Updated packet 0x99 (Multi Placement) for HS clients - from 26 to 30 bytes, to include multi hues.
	Added new NPCAI for passive NPCs who can be attacked, but will never attack back: AI_PASSIVE = 7
	Updated Wall of Stone-spell to no longer place walls on the same tiles as where characters are standing
	Added brute-force updating of character's total weight when main backpack is opened, as a quick-fix for broken character weights
	Updated packet 0xA9 (Character List/Starting Locations) with UO:SA and UO:HS-specific handling.
	Updated packet 0x24 (Draw Container, from 7 to 9 bytes) to support Container Type-flag in UO:HS clients, to ensure that containers, spellbooks and vendors continue working.
	Changed the upper limit for the amount of stamina that can contribute to faster attack-speeds (for NPCs only) from 100 to 300
		This increases their maximum theoretical attack-speed from attacking every 1.5 seconds to roughly every 0.75 seconds
	Fixed incorrect Meditation skill-entry for lich NPCs (DFNDATA\NPC\undead.dfn) - was set to max 9500 (950.0), should have been 950 (95.0)
	Earthquake-spells will no longer affect mounted targets, animation-wise
	Added new UOX.INI option to determine whether attack-speed bonuses are gained from Stamina (default) or Dexterity: ATTACKSPEEDFROMSTAMINA=1/0
	Added new UOX.INI option to control the displaying of damage-numbers in combat (previously used DISPLAYHITMSG for numbers too): DISPLAYDAMAGENUMBERS=1/0
	Implemented better support for Yell (1.5 * normal speech distance) and Whisper (1 tile distance for players, 3 for GMs)
	Whispering will no longer take hidden players out of hiding
	Normal players can no longer see regular speech from permanently hidden GMs or Counselors
	Normal players can see whispers from permanently hidden GMs or Counselors, if they're within distance (3 tiles)
	Added a new section to UOX.INI - [clientsupport] - along with the following settings to determine approved client-versions for the server:
		CLIENTSUPPORT4000=0/1
		CLIENTSUPPORT5000=0/1
		CLIENTSUPPORT6000=0/1
		CLIENTSUPPORT6050=0/1
		CLIENTSUPPORT7000=0/1
		CLIENTSUPPORT7090=0/1
		CLIENTSUPPORT70160=0/1
		CLIENTSUPPORT70240=0/1
		NOTE: Each of these settings represent a range of clients, not just the individual versions mentioned. This means that CLIENTSUPPORT4000, for instance,
		 will allow or disallow connections from clients 4.0.0 to 4.0.11f. Also note that while it is possible to enable support for all clients at the same time,
		 it highly recommended to restrict support for client versions that match up to what the server is running.
	Fixed various issues with the skill-gump (crashes) and skill-locks (not working/showing weird gumps instead of arrows/lock)
	Added new UOX.INI option: EXTENDEDSTARTINGSTATS=0/1
		If enabled, makes new characters start with 90 statpoints (selectable in clients 7.0.16.0+ only, lower versions only get 90 if using templates) instead of 80.
	Added new UOX.INI option: EXTENDEDSTARTINGSKILLS=0/1
		If enabled, allows for four starting skills (selectable in clients 7.0.16.0+ only, lower versions only get 4th skill if using templates) instead of three
	Added (very) experimental support for UO:Enhanced clients v4.0.23.1+
	Did some minor code-cleanup stuff, including but not limited to:
		Reduced scope of some local variables to where they are actually needed/used
		Changed some const std::strings function parameters to references instead of values
		Changed some "stuff.size() == 0"-checks to "stuff.empty()"
		Changed some "stuff.size() != 0"-checks to "!stuff.empty()"
		Removed some variables that were initialized but never used
	Increased world-loading speeds by ~35-40%, and saving by ~30-35% (your mileage may vary, this was tested on Windows 7, on an SSD)
	Included <climits> in mapstuff.h and <stdlib.h> in cDice.cpp to fix a compiling issue in Linux
	Updated some JS Console Methods in JS/COMMANDS/consoletest.js
	Made the WIPEABLE bit a member of cBaseObj instead of cItem, so it can be used by both items, spawners, characters and multis - though only works for items and spawners atm
	Updated the 'WIPE command to not delete non-wipeable items and spawners
	Fixed a crash-bug in JS/COMMANDS/gumps.js where the 'ISTATS command could crash the server if used on a spawner-object with no spawnsection set
	Fixed read-only books (setup through DFNDATA/MISC/books.dfn) by updating the MORE dfn-tags in DFNDATA/ITEMS/MISC/books.dfn
	Implemented support for automatically renaming books when the book titles are updated by players
	Fixed broken Bulletin Boards - should no longer freeze the client, and can actually be used for posting messages again
	Disabled MsgBoardMaintenance() in CWorldMain::CheckAutoTimers() until someone can figure out why they break bulletin boards
	Added a new NPCLIST (escorts) to DFNDATA/NPC/npclists.dfn, and an NPC escort spawner to DFNDATA/ITEMS/GMMENU/spawners.dfn (dragon slayer)
	Added Ter'Mur Map Area (REGION 250) to DFNDATA/REGIONS/regions.dfn
	Added code to shut down UOX3 (instead of crashing later on) if it fails to load any regions from region DFN scripts
	Changed all references to MAP in DFNDATA/REGIONS/regions.dfn to WORLD (which unlike MAP is actually read by UOX3 in this file)
	Fixed an issue in JS/SKILL/TAILORING/scissors.js where the script was referencing socket, but should have referenced pSock (dragon slayer)
	Updated JS/teleport.scp with teleport-locations for new maps (dragon slayer)
	Updated JS/teleport.scp with fixes for a whole bunch of old locations, and added some missing ones
	Added layers to DFNDATA/ITEMS/MISC/jewelry.dfn (dragon slayer)
	Added ML-era weapons to JS/SERVER/DATA/weapontypes.js (dragon slayer)
	Added code-support for SA-era weapons, and added them to JS/SERVER/DATA/weapontypes.js and JS/jse_objectassociations.scp
	Updated House-gump in DFNDATA/MISC/gumps.dfn (dragon slayer/Blue Dragon)
	Updated JS/ITEM/sword.js to use CreateDFNItem instead of CreateBlankItem for raw fish steaks and kindling (dragon slayer)
	Added cutting hides into leather through JS/SKILL/TAILORING/scissors.js (dragon slayer)
	Added MAPUOPWRAP tag to DFNDATA/MAPS/maps.dfn - only used by clients 7.0.24+
	Added support for reading map#LegacyMUL.uop files (regular map#.mul files with a uop header) in clients 7.0.24+
	Fixed an issue where an NPC knowing too many skills could crash UOX3 if when listing them in response to a player
	Players can now train skills from NPCs using the "train <skill>" phrases.
	Corrected coordinates for REGION 75 (Destard)
	Disabled detection of keypress "0" in JS/CONSOLE/console.js so UOX3 will actually reload all scripts when pressing 0
	Moved reloading of JS/teleport.scp from the already slow DFN-reload (console option 7) to the much faster Regions-reload (console option 4)
	Fixed an issue where some creatures with ANTIBLINK tag set in UOX3/DFNDATA/CREATURES/creatures.dfn would play get-hit animations as attack-animations
	Added numerous creatures to DFNDATA/CREATURES/creatures.dfn, though some only have placeholder icons and sounds.
	Updated various UOX3 documentation (installation, configuration, server-settings, JavaScript docs)

14/12/2011 - Xuri (0.98-4.0i)
	Fixed an issue causing errors when compiling in VS 2008 Express and newer (giwo)
	Added some exception-handling to cScript::DoCallback() in cScript.cpp (spdddmn)
	Added NPCWANDER-type 5 (WT_FROZEN) - which will stop NPCs from moving. Useful for reapers and corpsers and such.
	Added support for six new JS events:
		onBuy( socket, objVendor ) - triggers for vendor before tradegump is opened. Can be used to restrict vendor access.
		onSell( socket, objVendor ) - triggers for vendor before tradegump is opened. Can be used to restrict vendor access.
		onBuyFromVendor(socket, objVendor, objBought ) - triggers for item while item is being bought from an NPC vendor; return false in script to block sale, defaults to true
		onBoughtFromVendor( socket, objVendor, objBought ) - triggers on item after purchase has gone through and item has reached the player's backpack
		onSellToVendor( socket, objVendor, objSold ) - triggers for item while item is being sold to an NPC vendor; return false in script to block sale, defaults to true
		onSoldToVendor( socket, objVendor, objSold ) - triggers on item after sale has gone through and item has reached the vendor's boughtpack
	Included CJSMapping.h and cScript.h in vendor.cpp to support new JS events
	Added onBoughtFromVendor JS events to pet-statue scripts in JS/NPC/PETS/ to automagically turn statues into live pets immediately after being bought
	Added a NULL-check in CJSEngine::AquireObject() in CJSEngine.cpp (spdddmn)
	Added an extra check to CPISellItem to make sure the character trying to sell items still owns those items when accepting trade
	(Added a temporary workaround for NPC pathfinding with long queues of NPCs trying to reach the same target)
	Added new DFN tags for ranged weapons, defining ammunition id required (color optional) and missile-effect id played (color/rendermode optional):
		AMMO=id (color)
		AMMOFX=id (color rendermode)
	Added AMMO and AMMOFX tags to ranged weapons in archery.dfn, aos_weapons.dfn, se_weapons.dfn and baseitem.dfn
	Added support for Fukiya blowguns as an Archery weapon in code
	Added new item DFN tag (and JS item property) to define maximum amount of stones (weight) a container can hold (replaces hardcoded value):
		WEIGHTMAX=# (defaults to 40000 - or 400.00 stones - for all containers)
	Added container-capactity information to item tooltip
	Added "Locked Down" text to item tooltips for locked down items. Refresh seems funky though.
	Fixed an issue where tooltips would display the current weight of and amount of items being spawned by container-spawners
	Fixed a server crash caused by the Item Identification-skill when used on items of type 15 - IT_MAGICWAND
	Fixed item-tooltip that describes remaining charges on an item of type 15 - IT_MAGICWAND.
	Fixed an issue with the JS Method Open for File Objects where it wouldn't allow opening files for appending or writing, only reading
	Fixed name in addmenu for item 0x0F64 (unused torch)
	Fixed TrainerShopping list in DFNDATA/ITEMS/shoplist.dfn - now refers to actual animal-statue items in DFNs
	Fixed DIR values for various wall sconces (DFNDATA/ITEMS/lighting.dfn) and heating stands (DFNDATA/SKILLS/TOOLS/alchemy.dfn)
	Fixed some incorrect scriptIDs for lightsources in jse_fileassociations.scp and jse_objectassociations.scp
	Fixed broken smithing of agapite items due to duplicate item-numbers between agapite and gold crafting DFNs (DFNDATA/CREATE/smithing_agapite.dfn)
	Fixed 'SETRACE command, no longer tries to use non-existing method to set character's race (JS/COMMANDS/setrace.js)
	Fixed some confusion with how vendor buy/sell backpacks were handled internally in code
	Fixed an issue where onCreate JS scripts would not run for duped items
	Updated dictionary-files with some more messages, including a missing systemmessage used to inform of remaining amount of lockdowns in houses
	Changed MAX_NAME to a 128 byte limit to support long item names.
	Changed JS scripts for lights to save DIR to MOREX when turning light off, and load DIR from MOREX when turning on. Sets default DIR if no MOREX value can be found.
	Changed some items spawned through code to use CreateScriptItem (DFN based) instead of CreateItem (Tiledata-based):
		Leftover arrows and crossbow-bolts that appear on ground during combat
		All cases where gold coins are spawned (newbie gold, random fishing, gravedigging, result of trading, NPC escort reward, etc)
		Ingots created from smelting items
		Resurrection robes (DFN entry added to DFNDATA/ITEMS/GEAR/CLOTHING/clothing.dfn for potential tweaking)
	The empty bottles that appear after using a potion will now be DFN based (JS/ITEM/potion.js)
	Fixed an error in JS/ITEM/diceandcup.js (dragon slayer)
	Made spawners of type IT_AREASPAWNER (69) use the MORE value ('set more 0x0000XXYY) to determine offset area to spawn in
	Corrected hit sounds for bows and crossbows, were using dart sound
	Changed miss-sound for bows and crossbows to make them different from melee weapon misses
	Randomized impact-sounds for melee weapons
	Randomized get-hit sounds for male and female human characters
	Revamped spell-damage and magic-resist systems:
		Added new function in magic.cpp to calculate spell-damage after magic-resist and eval-int vs resist-check:
			SI16 CalcSpellDamageMod( CChar *caster, CChar *target, SI16 baseDamage, bool spellResisted )
		Updated cMagic::CheckResist() with magic resistance formulas based on pre-AoS information
		Added BASEDMG tag to a number of spells in DFNDATA/SPELLS/spells.dfn.
			For damage-spells, it's the maximum potential basedamage done before bonuses (or penalties) based on target resist, caster eval int and item resistances.
			For healing spells, it's the maximum potential basehealing done before potential bonuses
		Damage-spells updated to use new methods for calculating damage and magic resistances, both of which should now be close to pre-AoS implementation
		Changed Chain Lightning and Meteor Swarm spells to split the total damage done between all targets
		Mind Blast changes:
			Mind Blast will now never exceed 60% of target max-health, nor above 120% of BASEDMG
			If target's Int stat makes out a larger percentage of his/her total stats (Sum of Str, Dex, Int) than the caster's, spell backfires onto caster
		Debuff-spells like Clumsy, Feeblemind, Weaken and Curse can no longer be fully resisted. Resisting will halve the effect-duration instead.
		Spells will now only do double damaga against non-human NPCs (monsters and animals)
		Exposed CombatExplodeDelay to UOX.INI, and changed the default delay between targeting and damage for the Explosion spell from 0 to 2 seconds
		Updated JS/MAGIC/level1targ.js with new magic damage and resist system, and added noNeedReags check on caster to potentially skip reagent checks
		Fixed (visual-only) issue where damage-numbers would display over head of caster twice if caster was also target
		Added JS Spell property "name" - can be used to get the name of a spell as defined in the dictionary-files (entries 593-662)

2/7/2010 - Xuri (0.98-4.0h)
	Added new UOX.INI settings:
		GLOBALITEMDECAY - Toggles on/off item decay on a global scale. Note that it does not remove the decay-status from items, it just
						resets the decay-timer when it reaches 0
		SCRIPTITEMSDECAYABLE - Toggles whether DFN-items will decay by default or not. Can be overriden by DECAY tag in item-DFNs
		BASEITEMSDECAYABLE - Toggles whether base-items will decay by default or not. Can be overriden by DECAY tag in harditems.dfn
		ITEMDECAYINHOUSES - Toggles default decay of non-locked down items inside multis (houses and boats)
	Removed lines from add.js that set decayable as true or false (except for spawners), default decay now handled by ini-settings
	Made skulls dropped as loot by Bonemages movable
	Fixed several issues with spawners.dfn, including incorrect names and spawnobject-entries (Puck)
	Added default ID to base_spawner item in DFNDATA/ITEMS/GMMENU/spawners.dfn to make it spawnable without invalid gfx
	Fixed an incorrect ID for Iron Ore in DFNDATA/HARDITEMS/harditems.dfn and DFNDATA/ITEMS/SKILL/RESOURCES/mining.dfn
	Fixed a bug that stopped UOX3 from reading and applying DIR values from item-DFNs correctly
	Added DIR values to all lightsources in DFNDATA/ITEMS/BUILDING/lighting.dfn
	Added DIR values to all .js files in JS/SERVER/LIGHT/ folder, enabling players to turn on/off lightsources

2/3/2010 - Xuri
	The duping command (dupe.js) should now be able to dupe spawner-objects properly
	Added missing Tinker Tools and Fletching Tools to jse_objectassociations.scp (Puck)
	Fixed an incorrect name-entry in namelists.dfn (Puck)

2/1/2010 - Xuri (0.98-4.0g)
	Fixed an issue with open doors in player houses that could cause them to decay if they were open during decay-check
	Fixed an issue with locked down items decaying (despite being inside houses)
	A system message should now be displayed when locking down items, showing how many lockdowns remain
	Added JS Item property: multi - A read-only Object-reference to the multi a specific item is inside
	Items of objType OT_SPAWNER with amount set higher than 1 should no longer be duped when picked up off the ground
	Added movable=2 and weight=50000 to Base_spawner-definition to make it impossible for players to steal them

2/1/2010 - Xuri (0.98-4.0f)
	Added script for Dice and Cup-item, which lets players use said item to...(drumroll, please)...roll dice!
	Fixed an issue where NPCs could spawn at Z -128
	Fixed an issue with regional spawns and type 69 spawners which would cause NPCs to be spawned in blocked locations
	Fixed an issue with type 62 spawners which would cause NPCs to spawn at Z 0 (Shudderz)

1/31/2010 - Xuri (0.98-4.0e)
	Added DEF values to standard clothing, footwear and headwear
	Minor fix to JS/COMMANDS/TARGETING/add.js which ensures that the script won't break under some very specific circumstances
	System-message rapporting how many ingots player gets when smelting player-made items should now rapport correct amount
	Made GetScriptItemSettings look for "x" instead of "0x" in harditems.dfn, fixes some stacking issues with ingots
	Corrected IDs for gold coins and kindling in harditems.dfn by removing leading 0s in the IDs
	Crafting system can now handle MAXRANK values up to 255

1/30/2010 - Xuri
	Fixed an issue with sword.js which stopped you from carving shafts/kindling from a single wooden log
	Re-ordered IDs listed under METAL in DFNDATA/CREATE/resources.dfn to make UOX3 give same ingot-types when smelting
		player-crafted items as when smelting raw ore.
	Moved buckler-entry in smithing.dfn from item 1 to item 367 as it doesn't seem possible to craft item number 1
	Added missing pickpocket-dummy entries to jse_objectassociations.scp
	Added decayable = false to freeze command in misc-cmd.js
	Did some minor updates to the JavaScript Documentation
	Did some tweaks to some tailoring js-files to make spinning wheels stop breaking if global onCreateDFN script is present
	Removed erroneous DEF values from leather.dfn, studded_leather.dfn and bone.dfn - should use values from base_armor.dfn

1/29/2010 - Xuri
	Fixed an issue that caused NPC shopkeepers to get overloaded by the weight of items in their shop-layers
	Fixed an incorrect entry in namelists.dfn

1/28/2010 - Xuri (0.98-4.0d)
	Fixed a servercrash that occured when server tried to regrown wool on shorn sheep that were dead

1/24/2010 - Xuri
	Added definition of 0x1EB9 as a Tinker Tool in jse_objectassociations.scp
	Added system messages confirming when items have been locked down or released in a house
	Fixed a bug where targeting a non-valid object would crash UOX3 when trying to release locked down items

11/08/2009 - Xuri
	Added support for LOOT and PACKITEM dfn tags in item-defintions, for pre-adding items to containers (Shudderz)

5/11/2009 - Xuri
	Fixed client/server synch-issue with boats by changing prSend( 1 ) to prSend( 0 ) in boat movement code (Jediman)
	Added stablemaster JS-script and assigned it to the animal-trainer vendors (Xuri)
 		Available commands: claim (list|pet-name), stable
	Added missing Meteor Storm Scroll to DFNDATA/ITEMS/MAGIC/scrolls.dfn (Ghostwolf)
	Added a new DFN (DFNDATA\NPC\lbrraces.dfn) with Meer and Juka NPCs  (Ghostwolf)
	Added Meer and Juka races to races.dfn (Ghostwolf)
	Added Meer and Juka NPCs to GM-menu under Humanoid NPCs (Xuri)
	Fixed messed up smithing gump (Ghostwolf)
	Added Jhelom fighting pit to regions.dfn and renumbered the regions (Ghostwolf)
	Added other regions included dungeons, guard outpost, etc (Ghostwolf)
	Added regions in Trammel, Ilshenar, Malas and the Map of Tokuno Note (Ghostwolf)
	Updated instalog-section with Trammel and Ilshenar inns (Ghostwolf)
	Changed Bucc's Den regions to not guarded (Ghostwolf)
	Added two new NPCs - [shade] and [armeddaemon] to DFNDATA/NPC/undead.dfn and DFNDATA/NPC/daemons.dfn(Ghostwolf)
	Tweaked ID of existing [daemon] to that of the unarmed one (Xuri)
	Added Shade and Armed Daemon entries to GM menu (Xuri)
	Added support for bamboo flute in musicianship/enticement/peacemaking JS-scripts (dragon slayer)
	Added entries for bamboo flutes in DFNDATA/ITEMS/SKILLS/MISC/music_instruments.dfn (Xuri)
	Added bamboo flute to GM-menu under music instruments, and entries in jse_objectassociations.dfn (Xuri)
	Added new JS-script for bolas - JS/ITEM/bola.js (dragon slayer)
	Added entry for bola in a new DFN file: DFNDATA/ITEMS/GEAR/WEAPONS/missile_weapons.dfn (Xuri)
	Added entry for bola in jse_objectassociations.dfn (Xuri)

3/22/2009 - Xuri (0.98-4.0c)
	Fixed travelling by recall spell or magic gate between worlds
	Fixed Jailing and Releasing players in worlds other than world 0
	Fixed issue with the 'ADD command that would put items in your backpack instead of target's backpack
	Removed a TriggerEvent from go.js that should not have been there
	Corrected scripttrigger for newly created bankchecks in banker.js
	Fixed teleport entries from Serpent's Hold to Fire dungeon (Ghostwolf)
	Added new midilist section (23) for dungeon music (Ghostwolf)
	Added MIDILIST=23 entry in region 29 (dungeons)

2/01/2009 - Xuri
	Updated trainingdummy.js and pickpocketdip.js with code that will auto-fix them should their timers ever break
	Pets are removed from petlist when their stabled flag is set to true, and added again when set to false
	Players will no longer have to shove through characters that are permanently hidden

1/19/2009 - Xuri
	Automatic worldsaves can now be disabled by setting SAVESTIMER in UOX.INI to 0
	Added blank scrolls and empty books to ScribeShopping SHOPLIST
	Added new vendor NPCs using ScribeShopping shoplist: m_scribe and f_scribe
	Added new scribe-spawner item, and added it to GM-menu
	Sorted male and female NPCs and vendors alphabetically in the NPCs-menu
	Fixed some issues in shoplist.dfn
	Fixed an error in tailoring.js where invalid socket and character objects were referenced
	Removed a debug-message from taming.js
	Pen and Ink-items will now work similar to using the inscription skill directly

1/19/2009 - giwo (0.98-4.0b)
	Fixed an issue causing smelted iron ore to combine with colored ore already in a players pack.
	Fixed a bug making it impossible to accept or deny a recruit into a guild.
	Added functionality to automatically turn on the Guild title display of all members when a guild aligns with Chaos/Order.
	Added onDropItemOnItem( iDropped, cDropper, iDroppedOn ) JS Event to handle dropping an item on another item.
	Added onVirtueGumpPress( pUser, cTarg, buttonNum ) JS Event to handle clicking the Virtue gump icon (and subsequent menus).

1/18/2009 - giwo
	Moved the magic scroll handling from cPlayerAction.cpp out to JavaScript (items/magicscroll.js)
	Fixed a bug with the JS Method Char.CastSpell() where it never returned a value to the calling script.

1/18/2009 - giwo (0.98-4.0a)
	Fixed a crash caused by clicking on the Virtue Gump icon in the paperdoll
	Added some checking before sending a status window to ensure the character is visible and in range
	Added some checks to prevent one from inviting themselves to a party

1/17/2009 - giwo
	Fixed the handling for the UOX ini tags OVERLOADPACKETS and DARKLEVEL

1/17/2009 - giwo
	Possible fix for clients > 6.0.5.0.

1/16/2009 - giwo (0.98-3.7v)
	Implemented 0xBD CPClientVersion packet to request the version from the client.

12/16/2008 - Xuri
	Fixed a bug that prevented players from picking up/moving items in their own backpacks

Oct 12, 2008 - Maarc

	Bug fix on GetColumn JS implementation
	Error checking on statement indexes in GetColumn() in ODBCManager

Oct 12, 2008 - Maarc

	#ifdef'd ODBCManager implementation.  You will need to enable through Config.h, and add 2 files to project.
	Accounts load and save from a database, falling back to read/write if connection doesn't exist
	Both logins are logged into SQL database
	ODBCManager exposed to JS Engine - note, columns MUST be fetched in ascending numeric starting from 0
	Long strings printed to the console will now wrap in a friendly fashion
	Unknown INI file tags will now print out at startup

7/27/2008 - Xuri
	Entry for ScriptID added to 'CSTATS, 'ISTATS and 'TWEAK menu
	Fixed an erroneous example in JavaScript Docs
	Fixed an update-issue with race-gates
	Increased MAX_Z_LEVITATE from 10 to 15 to better deal with moving on uneven terrain (like in T2A)
	It should now be possible to walk through secret entrances made up of walk-through-able grass/mountain tiles

7/16/2008 - Xuri
	TWEAK now works for any admin character, no matter their commandlevel (gumps.cpp)
	The onPickup JS-event should now work
	Updated onPickup JS Event in Javascript Documentation

7/03/2008 - Xuri
	Animal taming no longer checks for the "ANIMAL"-tag in creatures.dfn
	Converted WeightPerStr from UI08 to R32, so it can support decimal values
	The onFall JS event will now work if characters fall further than 20 Z tiles (CChar.cpp)
	Updated onFall JS Event in Javascript Documentation

7/02/2008 - Xuri
	Changed the system message being displayed when fatigued due to being overloaded
	Added system message for when character becomes overloaded after picking up item
	The math for calculating max carrying capactity for players matches OSI values more closely
	Default WeightPerStr changed from 5 to 3.5, to closer match the values used by OSI
	Updated dictionary files with two new system messages
	Added a check to the 'POLY command to prevent characters from polymorphing into an invalid, client-crashing id (0x20)

6/22/2008 - giwo
	Modified books.dfn to use the standard TAG=DATA format. Each line in a PAGE section is now preceded with LINE=
	Modified motdtips.dfn to use the standard TAG=DATA format. Each line in a TIP or MOTD section is now preceded with LINE=
	Modified the JSMethod CBase_GetTag to avoid a possible crash.
	Removed the following variables from CWorldMain cmem, imem, nextCharSerial, nextItemSerial as this functionality is handled by the ObjectFactory

6/22/2008 - giwo (0.98-3.7t)
	Added error handling to prevent a crash if GetByte/GetWord/GetDWord were passed an invalid offset
	Changed the tweakItem and tweakChar handlers to use command level rather than the "IsGM" flag.
	Defaulted the starting serial to 0x1 rather than 0x0, as some UO packets don't recognize 0x0 as a valid serial.

6/22/2008 - Xuri
	Fixed hex-id of turnips in foods2.dfn, these turnips should now be stackable
	Fixed hex-id of studded sleeves in studded_leather.dfn, previously used hex-id for gloves
	Tweaked the region surrounding Buccaneer's Den so it extends around all buildings in the town
	Removed entry 104 (rawfish.js) from jse_fileassociations.scp as it was no longer in use
	Archerybuttes work again, and should have a "machine-gun"-issue fixed
	Scripts that used onUse() now use onUseChecked()
	Updated UOX3_changelog.txt in the Docs-folder to include updates up to 0.98.3-7


6/21/2008 - giwo
	Fixed an infinite loop crash caused by a DFN entry calling itself with GET
	Added JS Character Propery "poisonStrength" to set the strength of the poison a character will inflict on his foe during combat.
	Implemented supermoleet's fix for the black screen after logging in to a different world

6/21/2008 - giwo (0.98-3.7s)
	Modified UString to function without crashing under VS2008
	Fixed a bug in CItem::RemoveFromSight() causing items inside containers on the ground not to properly notify nearby players when removed.
	Fixed a bug in CPIDropItem() when the compiler does not automatically instantiate booleans to false

6/21/2008 - giwo
	Fixed several issues with tracking.
	Fixed a crash caused by passing an invalid object to the JS Method TurnToward

6/20/2008 - giwo (0.98-3.7r)
	Added support for Visual Studio 2008
	Fixed an issue causing a player to be poisoned when a JS call to SetPoisoned(0,0) was made.


02/16/2008 - Xuri
	Made magical shortbows and elven composite bows fire arrows instead of crossbolts

10/27/2007 - grimson
	Split onUse into onUseChecked and onUseUnChecked.

10/09/2007 - Xuri
	Fixed some errors in jail.js that could mess up jailing/releasing characters
	Added new function (getCombatSkill) to weapontypes.js for returning skill used by equipped weapon as a string

9/08/2007 - grimson
	Properly initialize the wander area when the wandermode of an NPC changes.
	Use stamina instead of dexterity when calculating the attack delay to match
	up with the old OSI combat calculations.

9/07/2007 - grimson
	Force the wandermode of NPCs spawned by spawnregions to 3 (box), so they can travel
	the whole spawnregion.
	Properly initialize the wander area when the location of an NPC changes.
	Use the old OSI way of calculating hit chances.

8/26/2007 - grimson
	Added new JS property for items: "speed" this can be used to get and set the speed
	of weapons.
	Added new setting to spawn.dfn: "ONLYOUTSIDE" set this to one so that items and chars
	will only spawn outside of buildings in that area.
	Modified the spawn code for spawnregions so that NPCs with wandermode 3 (box) and 4 (circle)
	keep within the spawnarea boundaries.
	Send NPCs that left their wander area for some reasons back there.

8/12/2007 - grimson
	Use an enum for racial relations, should help with reading the code.
	Fix a bug where racial allys would attack each other.

7/28/2007 - grimson
	Added a new setting to the uox.ini: BASICTOOLTIPSONLY. If this is set to 1 the
	tooltips will only contain basic information, like the name and the weight of
	an item.

7/23/2007 - giwo (0.98-3.7q)
	Added support for updated UOKR packets.

7/17/2007 - Xuri
	Added new JS script for moonstones, used to create gates between felucca & trammel
	Added new JS script for spyglasses, used to see the phases of the moons
	Added new DFN item: [moonstone], uses new moonstone JS script
	Removed duplicate spyglass entries in item-DFNs, and added script tag for new spyglass JS script
	Drinking healing potions will no longer also give the user night-sight
	Cure-potions should be working again (stranf)
	Drinking a poison-potion will now poison one's character
	A timer now stops players from using multiple potions rapidly

6/12/2007 - giwo (0.98-3.7p)
	Added the JavaScript CSocket methods FirstTriggerWord(), NextTriggerWord(), FinishedTriggerWords() to allow handling trigger words sent from the client during speech.

6/10/2007 - grimson
	Fix reading of the new SPEED DFN tags for NPCs.

6/10/2007 - grimson
	Allow faster attacks on fleeing NPCs, so they won't be chased without an end.
	Allow following NPCs to run if their target went to far away, so they can catch
	up on it.

6/10/2007 - grimson
	Modified cMovement::NpcMovement() and cMovement::HandleNPCWander() so that NPCs
	only run while they still have stamina left.
	Added two new settings to the uox.ini, NPCRUNNINGSPEED and NPCFLEEINGSPEED, they
	work the same way as NPCMOVEMENTSPEED.
	Added three new DFN tags for NPCs. WALKINGSPEED, RUNNINGSPEED and FLEEINGSPEED
	they also work the same way as the uox.ini settings, and will override those if
	present.

6/08/2007 - Xuri
	Fixed multiple JS-scripts that would not work correctly with negative Z values (Used GetSByte instead of GetByte)
	Fixed a few "You can't think of a way to use that item"-messages appearing when using certain JS-based items
	Removed rawfish.js and the script entries for it, no longer used.

5/26/2007 - giwo (0.98-3.7o)
	Fixed a couple crashes caused by targeting non-PC's in the PartySystem.

5/25/2007 - giwo (0.98-3.7n)
	Added JavaScript function "Moon( moonNum, newVal )" which will get and set the server moon values.
	Modified JavaScript Item.decaytime and Item.tempTimer to calculate the new value as a future time in seconds (unless a 0 is passed).
	Fixed door.js allowing a locked door without an associated key to always be openable.

5/20/2007 - Xuri
	Added teleport locations for Malas and Tokuno to moongate.js, and added configuration values at top of script

5/19/2007 - Xuri
	Items with wipable status set to 0 should no longer be removed when using the 'WIPE command
	Added support in doors.js for linked double-doors that will both open at the same time
	Added new command - 'LINKDOORS - used to link doubledoors together, and 'UNLINKDOORS to unlink them
	Added new script (bankers.js) that replaces hardcoded banker-AI and adds CHECK and DEPOSIT # / <target> commands
	Added new script (bankcheck.js) that handles the functionality of bank-checks
	Assigned script 3201 to bankers, and removed NPCAI=8
	Changed mapdefinitions (maps.dfn) for Trammel to map1.mul, statics1.mul and staidx1.mul

5/18/2007 - grimson
	Make sure we check for scripts envoked by type or id before we use the global script.

4/09/2007 - grimson
	Remove some not needed code and slow fleeing NPCs a bit down, so that other chars
	can still catch up with them.

4/09/2007 - grimson (0.98-3.7m)
	Added a new setting to the uox.ini, LOOTINGISCRIME. If you set it to 0 looting
	corpses	of innocent chars is not taken as a crime.
	Fixed and changed parts of the walking code. If NPCs have the RUNS tag set they
	will really run when they attack, instead of just showing the running animation.
	Tamed chars will now run, if the char they follow is running, this should reduce
	the warping effect of them a bit.

4/08/2007 - grimson
	Fixed a bug where we dropped the hair and beard items, from corpses, on the ground.

3/31/2007 - grimson
	Added elven hair styles to the dfns.

3/30/2007 - grimson
	Corpses should now display the hair and beard of the char they where created from.
	Modified CItem::SetCont() so that it checks against the item layer instead of fixed
	IDs to see if an item is hair or a beard.

3/30/2007 - grimson
	Fixed the position of the coprse item when the char died falling forward.

3/30/2007 - grimson
	Fixed cMagic::CheckBook(), it was calculating wrong numbers for the spells.
	Let chars randomly fall forward or backward when they die.
	The DISPLAYHITMSG setting from the uox.ini now also controls the damage display.

3/26/2007 - grimson
	Use an enum for the states of the skill locks, makes reading the code a bit easier.
	Fixed cSkills::HandleSkillChange(), the re-ordering of the atrophy created doubles
	and dropped entrys.
	Rewrote cSkills::AdvanceStats() so that the statlocks are actually used.

3/24/2007 - grimson
	Fix the onCreate JS script functions, they used the same event id. So if one didn't
	exist the other was also marked as not existing.
	Changed CPICreateCharacter::Handle(), if the start location for the new PC isn't send
	by the client it now uses the first start location from the uox.ini instead of the fixed
	location in britain.

3/3/2007 - giwo (0.98-3.7l)
	Allowed customization of supported client features via uox.ini
		CLIENTFEATURES
		SERVERFEATURES
		Note that these are bit-settings similar to the way STARTPRIV works.
		One will need knowledge of how to set individual bits in a value,
		or an editor to customize these features.
	Removed CLIENTSUPPORT from the uox.ini

2/21/2007 - giwo
	Committed some linux build error fixes on behalf of Cavalier

2/11/2007 - grimson
	Small rewrite of the weather system. Calculate snow, rain and storm intensitys only every
	server hour and use their values for the amount of weather effects on the screen.

2/11/2007 - grimson
	Fix the format of the pingIP field in the CPGameServerList::AddServer() function. Now the
	client shows, after a moment, latency and packet loss information for the servers. It still
	doesn't work all the time.

2/10/2007 - grimson
	Added a new target type to the speech system, SPTRG_ONLYRECEIVER which sends the message
	only to the receiver and doesn't display it on the sender.
	Use the new target type in CSocket::objMessage() and CSocket::ShowCharName() to display
	the player name and serial only to the char requesting the information.

2/10/2007 - grimson
	Update the CPWalkOK Packet (0x22), the second byte contains the notoriety value (flag
	color) and make use of it.

2/08/2007 - grimson
	Fix a bug where items, that have a script but no onPickup event, get always bounced.
	Allow party members to remove themselfes from the party, even if they aren't the leader.

2/01/2007 - grimson
	Remove remains of the time command from command.dfn.

1/28/2007 - giwo (0.98-3.7k)
	Fixed an issue with TriggerEvent() that can cause a script to stop functioning if the triggered event did not return true
	Moved dynamic parts of [worldlight] section from uox.ini to their own output file in the /shared/ directory
	Exported telltime function along with the clock item and 'time command handling to JS.

1/25/2007 - giwo (0.98-3.7j)
	Fixed an issue causing it to be "snooping" to open a pack in a trade window.
	Added support for the OnPickup() JS Hook, note a return value of false will bounce the item.

1/25/2007 - giwo (0.98-3.7i)
	Fixed a compiler warning with the Party System
	Fixed an issue causing weight not to be added when grabbing items from a bank box.
	Moved BankBox creation to Player creation, addressing a situation where the first
		time a player opened his bank it would close immediately or crash the client.
	Added FindRootContainer() to simplify finding the top-most item containing other items.

10/29/2006 - grimson
	Fixed %tstamp output in the HTML templates.

10/14/2006 - grimson
	Added more details to the weapon tooltips.

9/28/2006 - grimson
	Change cMagic::SelectSpell() to first check for reagents and then for skill.

9/27/2006 - grimson
	Fixed the spawning of NPCs in CSpawnRegion::RegionSpawnChar() so that they are put
	into the correct world.
	Updated UOX3_Official.dsp to contain the files from the party system.

21st September, 2006 - Maarc

	Added commentary to some of the party classes headers
	Updated AddMember() and RemoveMember() to return a bool as to it's success
	Updated Leader() change code so that the leader is always first on the list
	Added isNPC property to the Party class to help us with how our code will go
	CChar now has an InParty() method, which is currently unused - will be used for fast lookups of party presence later.  This is NOT to be saved, as it disappears on server shutdown.
	Exposed the new party classes to the JS Engine
		var partyObject = CreateParty( leader );	// Returns NULL if the party failed to be made

		Party Class
			Methods
				bool Remove( memberToRemove );
				bool Add( memberToAdd );		// If it's a PC, then it will send an INVITE ONLY  It is up to the PC to accept/decline
				obj  GetMember( index );		// Returns a character object for the member at that index
			Properties
				leader					// Character object that is the leader, can return null - EDITABLE
				memberCount				// Returns the number of characters in the group - READONLY
				isNPC					// Returns true if it's an NPC party, false if not - EDITABLE

		Character Class
			Properties
				party					// Returns a party object that is the party associated, or null - READONLY (use party management for this!)
				partyLootable				// Boolean that dictates whether the character is lootable by the party - EDITABLE - Note that if you are not in a party, this does nothing!

20th September, 2006 - Maarc

	Added CPIAOSCommand packet including logging
	Changed CPISubcommands::Receive so that it doesn't log multiple times
	Updated party packet details
	Added basic party implementation.  Adding, removal and kicking works, speech does not
	Added sent packets CPPartyMemberList, CPPartyMemberRemove and CPPartyInvitation
	Updated dragging contents out of packs so that pet friends should be able to do so
	Added CPPartyTell packet
	Promoted Party::SendPacket to public method
	Added speech (individual and group) to party methods

9/10/2006 - Xuri
	Found and fixed a total of 19 missing semicolons in 15 different JavaScripts
	Modified sword.js and axe.js so bladed weapons can be used as magic weapons (of TYPE 15)
	Minor modifications to several JavaScript files

8/29/2006 - Xuri
	Fixed several issues with the UseResource JS Method (maarc)
	UseResource JS Method can now be used with both items (containers) and characters (maarc)

8/12/2006 - giwo (0.98-3.7g [3.8 BETA])
	Changed item limit in create dfn down to 4,999 to fix a bug in gump handling.

8/12/2006 - Xuri
	Modified the order of the arguments in the RESOURCE tag in create-DFNs to fit the following:
		RESOURCE=ID AMOUNT COLOUR (AMOUNT and COLOUR are optional)
	Added smithing DFNs for coloured ingots (Armor and shields only, no weapons).
	Added a commented out MOUNTID for the polar bear in creatures.dfn. Uncomment for ridable polar bears.
	Corrected SPACEX/SPACEY (clear space necessary to place the house) values for all houses.
	Updated skills.dfn with changes mentioned by giwo about FOREIGN and MINAMOUNT tags.

8/11/2006 - giwo (0.98-3.7f [3.8 BETA])
	Fixed a crash when attempting to place a house item outside a house.
	Fixed the location check when placing house items to allow them to be placed inside houses.
	Added a check on house items to only allow them to be placed in your house (Or anywhere by GM's).
	Bumped up the limit on items in create.dfn from 999 to 32,766.
	Removed FOREIGN and MINAMOUNT tags from ore entries in skills.dfn as they were superfluous
	Fixed CHANCEFORBIGORE tag handling from regions.dfn to give a % chance out of 100 to get a pile of 5 rather than 1 ore.

7/24/2006 - giwo (0.98-3.7e [3.8 BETA])
	Fixed an issue making it impossible to place items on tables.
	Fixed an issue with the uox.ini entry for log resource respawn area.
	Simplified many entries in uox.ini, making them easier to read.

7/19/2006 - Xuri
	Made onResurrect trigger before a resurrection instead of after, added option to override hard code by returning false
	Updated JavaScript Documentation to 0.44, and added missing commands to command list
	Added "ARMOUR" as an alternate spelling used along with the 'SET command

7/18/2006 - giwo (0.98-3.7d [3.8 BETA])
	Fixed a possible issue with TextEntry in JS gumps.
	Fixed an issue with the following JS events:
		OnSnooped
		OnSpellGain
		OnSpellLoss
		OnCommand
		OnPacketReceive
	Fixed several MingW32 compiler warnings.
	Fixed a Flagging issue with Racial enemies.
	Added uox.ini flag to disable/enable the A* Pathfinding routine: ADVANCEDPATHFINDING=0/1
	Fixed an issue causing errors when compiling under *nix.
	Fixed an issue causing monsters to constantly attempt to pathfind to a target they can't reach.

7/17/2006 - Xuri
	Added new command (rndtile.js) that allows tiling random items of a specific hue at a specific height
		Syntax: 'RNDTILE <startID> <endID> <hue> <Z>(optional) <movable true/false>(optional)

7/15/2006 - giwo (0.98-3.7c [3.8 BETA])
	Added a flag to CChar::PushDirection() allowing us to push to the front or back of the pathToFollow list.
	Changed CChar::mNPC::pathToFollow to a deque for more robust functionality.
	Fixed an issue with the A* Pathfinding routine causing creatures to path in reverse.
	Added some debugging information to A* Pathfinding (when running in Debug mode).

7/10/2006 - giwo (0.98-3.7b [3.8 BETA])
	Fixed an issue with CPFightOccurring packet which would cause the client to lockup.
	Made use of the CPFightOccurring packet during combat.
	Fixed an issue when a monster attacked a player who was not in combat UOX3 would not inform the client of a new target.

7/09/2006 - giwo (0.98-3.7a [3.8 BETA])
	Fixed an issue causing JS gumps to interfere with eachother.
	Fixed an issue causing serial numbers in the istats gump to display improperly.

7/08/2006 - giwo (0.98-3.7)
	Updated version to 0.98-3.7

7/07/2006 - Xuri
	Modified damage output of summoned creatures in magicsummon.dfn, as they were too powerful
	The owner of two pets/summoned creatures will no longer become a criminal if the two pets/creatures fight
	Summoned creatures (and normal ones) will no longer cast Blade Spirit/Energy Vortex, as they caused flagging errors

7/07/2006 - Xuri (0.98-3.6j) [3.7 RC2]
	Added scripted version of keys (now used instead of hardcoded ones), plus working keyrings
	Updated doors-script to make use of new scripted keys/keyrings as well as the new TextMessage arguments
	Added script=5013 (key.js) to [base_key] in dfndata\items\misc\keys.dfn
	Ghosts will no longer re-enter combat-mode if they speak while already in combat-mode
	Removed CombatWalk flag sent to ghosts when they talk, as player ghosts have no combat animations
	PLAYERPERSECUTION in uox.ini (allows ghosts to drain mana from other players) set to 0 by default
	 (Must be updated manually if using old uox.ini)

7/06/2006 - giwo (0.98-3.6i) [3.7 RC]
	Combined CChar:: emote(), emoteAll(), talk(), and talkAll() into a single function TextMessage().
	Renamed CItem itemTalk() to TextMessage() and modified it so passing a NULL socket sends the message to nearby players.
	Added two new optional parameters to JS method TextMessage(). allHear (defaulting to true) and txtHue.

7/05/2006 - grimson
	NPCs can now walk through player ghosts.
	Player ghosts are only visible when they are in war mode and they will enter war mode
	when they speak.

7/02/2006 - giwo
	Fixed an issue causing several item values not to be saved.
	Updated doors.js to not display the "blocked" message if the door ID isn't recognized.

7/02/2006 - giwo (0.98-3.6h) [3.7 RC]
	Removed door.cpp from the project.
	Modified the JS UseDoor() function to call the JS Event onUse() based upon the type of the item passed in.
	Fixed an issue causing AreaCharacterFunction and AreaItemFunction to return the number of objects they encountered
		rather than the number of times the function returns a "true" value.
	Modified TriggerEvent() to return true or false based upon the return value of the function.
	Moved doors out to JS.

7/01/2006 - Xuri
	New "AI"-Script: Cows may now (randomly) defend themselves from doubleclicks by falling over.
	Corrected various errors with liquid-containers (pitchers, bottles, goblets, etc.)

7/01/2006 - grimson
	Added new tag "MOUNTID" to creatures DFN, if this is set to the ID of a mount item the creature will
	be mountable.
	Updated creatures.dfn to make use of the MOUNTID tag.
	Removed CChar::IsValidMount( void ) as it is no longer of any use.

6/30/2006 - grimson
	Fixed a bug that caused the offline HTML files not to be written in some cases.
	Catch Serverlist entrys with less than 3 sections, these caused a crash when parsing the ini.
	Added %24time and %tstamp to HTML templates, %24time return the current time in the 24 hour
	format, %tstamp returns a unix timestamp.

6/29/2006 - grimson
	Let chars run if they follow a running char.

6/27/2006 - grimson
	Allow the body id to reach 0x3E2, so that the "dupre" body can be used without a problem.

6/27/2006 - grimson
	Changed cMagic::SummonMonster() so that it creates summoned from DFN entrys to make it easier to
	customize them.
	Added magicsummon.dfn to the npc section, it contains the dfn entrys for the creatures that can
	be summoned.

6/26/2006 - grimson
	Added an entry to jse_fileassociations.scp for the new oilcloth.js script.

6/26/2006 - giwo (0.98-3.6g) [3.7 RC]
	Fixed an issue causing not every instance of skill gain to use the amountToGain specified in skills.dfn.
	Changed MAX_NAME back to a 60 byte limit (note some Character packets only support 30 bytes).
	Moved CChar::lockstate and atrophy into PlayerValues_st
	Cleaned up CSkills::Atrophy and renamed it to HandleSkillChange() to better reflect it's functionality.

6/25/2006 - Xuri
	Updated fishinglist.dfn with generic loot (paintins, weapons, gems, various flotsam)
	Updated create/tailoring.dfn, items/gear/provisions.dfn and items/itemmenu.bulk.dfn with new oil cloth
	Fixed the 'STAMINA command in stats.js. Had ".isChar" misspelled as ".isCHar"
	Added new JS-script: oilcloth.js - Functional oil cloths, used for cleaning poison off of weapons
	Character can no longer use locked down potions or food

6/25/2006 - grimson
	Fixed loading of tempeffects when there is more than one effect saved.
	Increased the damage values of summoned creatures a bit.
	Fixed magic field effects.

6/25/2006 - grimson
	Fixed the output of the time command, it was confusing midnight and noon.

6/25/2006 - Xuri
	Characters no longer turn criminal from attacking their own pets/summoned creatures
	DFN: Updated spells.dfn with correct reagent requirements
	Fixed several bugs with the JS-scripted clumsy, heal, feeblemind and magic-arrow spells:
		Could cast while having weapons equipped
		Could cast while jailed
		Could cast without consuming any reagents
		SoundEffects weren't working properly
		Healing would (by design) subtract health from the caster
		Debugmessages weren't commented out

6/24/2006 - grimson
	Fixed two bugs in doLight() where we were sending the wrong light level to players.

6/23/2006 - grimson
	Changed the way the owner of an object is stored to use the serial of the owner.

6/23/2006 - grimson
	Changed checkPetOfflineTimeout() to ignore player vendors.
	Remove tempeffect number 44 as it is no longer used.

6/23/2006 - grimson
	Don't let normal players put items into the backpack of a player vendor they don't own.

6/22/2006 - giwo (0.98-3.6f)
	Fixed an issue causing a crash if a null socket was passed to JS CreateBlankItem() or CreateDFNItem().
	Fixed an issue causing houses not to be able to be placed in many valid locations.
	Reduced the checking area when placing a house around small houses in house.dfn
	Fixed an issue causing boats to always be placed at z -5 regardless of the water level.

6/22/2006 - grimson
	Don't add the weight entry to the tooltip of items that weight nothing.
	The "collect" command now also works when using the name of the vendor.

6/22/2006 - grimson
	Added the "view", "status" and "dismiss" commands for player vendors (updated dictionaries).
	Allow pet friends to mount the pet.

6/22/2006 - grimson
	Fixed a few places where looking into a pack from a player vendor would have been snooping.
	Added price and description information to the item tooltips of player vendors.

	DFN changes:
		Added a player vendor deed to misc_deeds.dfn.
		Put the player vendor deed into the add menu.
		Changed the player vendor entry in the malevendors.dfn so that they are no longer
		flagged as normal shoopkeepers.

6/20/2006 - giwo (0.98-3.6e)
	Updated the Makefile.am.
	Fixed an issue causing items to duplicate when moving around stacks larger than 32,767.
	Fixed an issue causing timers not to be properly reset by the JS engine.
	Fixed a DFN issue causing one to be able to create a board from a board.
	Fixed a DFN issue causing item values to be loaded improperly.

6/15/2006 - giwo (0.98-3.6d)
	Modified names in the AITypes enum to fit naming conventions.
	Minor optimizations in ai.cpp.
	Removed an unused worldsave tag handler from CBaseObject.
	Modified names in the CommandLevels enum to fit naming conventions.
	Modified FLAGS and SOUNDFX DFN tags in spells.dfn to allow for a full integer as well as the current split format.
	Simplified some functions in CPacketStream.
	Changed MAX_NAME back down to 30 characters as all character name packets sent to the client max out at 30 bytes.
	Made more use of IsWeightedContainer() in weight.cpp to streamline layer handling.

5/22/2006 - Xuri
	Added weapon type classifications for all weapons from the mondain's legacy expansion

5/14/2006 - grimson
	Fixed the "Large Dragon Boat" deed.

5/07/2006 - giwo (0.98-3.6c)
	Forced CItem::DecayTime to reset when decayable was set to true.
	Fixed an issue causing keys not to function on planks.
	Added JS socket methods GetSByte(), GetSWord(), GetSDWord(), to allow pulling negative numbers
		from the socket buffer.

5/02/2006 - Xuri
	Fixed the ever-swinging training dummies
	Fixed wrong item being added when crafting fishing poles

4/22/2006 - Xuri
	Fixed the guardzone for Delucia, was previously set to the graveyard north of the town

4/18/2006 - Xuri
	Items added using the RADD command in repeatingcmds.js will no longer decay by default
	Fixed the guardzone for Ocllo, X2 and Y2 were mixed up

4/07/2006 - grimson
	Removed the last change that should prevent items from decaying inside multis, as
	this is already done in a different part of the code.

4/07/2006 - grimson
	Don't add the amount of items to the item name in buy/sell gumps, as it is already
	shown in the gump.
	Don't let items decay when they are inside a multi, so if a player places decorations
	or furniture in his house it stays there.

	DFN Changes:
		Added GOOD tags to buyable items, so it's easier for an admin to use the
		advanced trade system.

4/06/2006 - grimson
	Fixed saving of the last used IP in the account files, and corrected the naming
	for the	contact field when saving the account files.

4/06/2006 - giwo (0.98-3.6b)
	Fixed an issue with accounts causing the FLAGS value not to function properly.
	Consolidated some code in CAccountsClass.
	Fixed some signed/unsigned mismatches in CAccountsClass.
	Modified Combat DEF calculations to remove superfluous code.

4/06/2006 - grimson
	Updated potion.js, so heal potions work again.

4/06/2006 - grimson
	Catch some more client crashes with speak, that's in the wrong colour.
	Update the reputation flags of a NPC when the NPCFlag get's loaded.

	DFN Changes:
	Pushed up the damage values of most NPCs.

4/06/2006 - giwo (0.98-3.6a)
	Fixed a rather substantial issue causing some character values to save incorrectly.
	Fixed a sign mismatch with GuildFealty.

4/05/2006 - grimson
	Changed the use of the HP DFN tag for items so you can specify a range for a random value.

	DFN Changes:
	Updated the stats for all weapons to fit the pre-AOS values. Pushed up the damage values
	of AOS and SE weapons so that they are in the same area as the other weapons.

4/04/2006 - giwo (0.98-3.6)
	Removed unused level value passed with Console.Warning() and Console.Error().
	Removed JS Console prop .level
	Modified JS Console Methods Warning() and Error() to remove the unused level value.
	Fixed several issues with mapdiff and staticdiff handling.
	Fixed a bug causing a crash when calling JS Event onGumpInput.
	Merged CMultiObject vectors ownerList and banList into a single map housePrivList, to allow multiple owner/banned levels
		and ensure there are no duplicate characters on the lists.
	Removed many superfluous uses of CChar::Dirty( UT_STATWINDOW ).

3/23/2006 - giwo (0.98-3.5o [3.6 RC])
	Minor changes to cSkills::Fish().
	Fixed an issue making it impossible to open Elven NPC paperdolls.
	Removed some typedefs that were no longer used.
	Moved CChar values townpriv and townvote to PlayerValues_st
	Moved CChar values foodList, hungerWildChance and hungerRate to NPCValues_st
	Removed CChar::inBuilding in favor of using a bools flag.
	Removed handling code for several unused Character values.

3/23/2006 - grimson
	Fixed a bug with the JS override for the combat damage calculation that caused 0
	damage to be applied when the attacker has no script attached and the global script
	doesn't exist eigther.

3/22/2006 - grimson
	Small fix to ApplyDamageBonuses() caused by my previous commit.

3/22/2006 - grimson
	Removed the code to raise your resistance value upon elemental damage, this can be done better in JS.
	Modified  CBaseObject::DumpBody() and CBaseObject::HandleLine() so that all resistance values get saved
	and loaded in/from the worldfiles.
	Added a new JS event:
		onDamage( damaged, attacker, damageValue )
		This will be fired everytime the char "damaged" gets damaged, the attacker can be a char or NULL.

3/21/2006 - grimson
	Changed the return value of OnCombatDamageCalc() to a SI16, I accidentially declared it to
	be a SI32.
	Replaced the JS Char property .defense with the new JS Char Method:
		mChar.Defense( hitLoc, damageType, doArmorDamage );
	so you can get all the different defense values for a char.

3/21/2006 - grimson
	Call the OnHungerChange JS event in the SetHunger() function of chars instead of calling
	it in every part of the code the where the hunger gets changed.

	Added a new JS event:
	onCombatDamageCalc( attacker, defender, getFightSkill )
		This event is called everytime combat damage is calculated. You can do your own damage
		calculation and return the damage to override the engine damage calculation, or return
		a negative damage value to use the engine damage calculation.


3/21/2006 - grimson
	A small fix to ApplyDamageBonuses(), the race damage of a weapon was applied to the final
	damage instead of the weapons base damage.

3/20/2006 - giwo
	Fixed a glitch in the CPExtendedStats packet.
	Modified CPIPopupMenuSelect to prevent opening the paperdoll of a non-human.

3/20/2006 - giwo (0.98-3.5n [3.6 RC])
	Fixed an issue with CPExtendedStats causing statlocks not to display in the stat window.
	Modified CChar::skilllocks and atrophy to save stat values to the worldfile.
	Fixed an issue with CChar::skill value causing possible data corruption.
	Fixed an issue causing the Backpack entry on a popup menu to display as selectable when the character
		should not have a pack (IE a non-pack animal).
	Made CBaseObject::SetWeight() a virtual function and overloaded it in CChar and CItem.
	Modified CChar::SetWeight() to automatically Dirty our object for a statwindow update.
	Simplified some DropItem() handling.
	Moved CBaseObject updateTypes to CChar as there is only one type of item update, and added
		a ClearUpdate() function to reduce superfluous packet sends.

3/20/2006 - grimson
	The JS item property .devinelock was sent as INT though it is a bool.
	Some small fixes to the tweak menu for items, this still had parts for a non existant MoreB
	value in it which shiftet some parts off, this also includes updated dictionaries.

3/19/2006 - grimson
	Renamed Get/SetElementResist() to Get/SetResist as we now handle all resistance types in it.
	Removed SetDef(), GetDef() and the def variable from CBaseobject.cpp and store armor values
	as physical resistance together with the other resistance values.
	Removed calcElementDef(), getElementDef and checkElementDef from combat.cpp and handle all
	defence calculations in calcDef(), getArmorDef() and checkDef().
	Removed JS char property .armour and item property .def, added a new method for chars and
	items .Resist(). That method takes either one value, the resistance type and returns the
	resistance value of that char/item, or two values, the resistance type and the amount the
	resistance value should be set to.

	JS changes:
		Updated JS scripts to use the new .Resist() method instead of .def/.armour

	Current resistance types are:
		1 - Armor
		2 - Light
		3 - Water
		4 - Cold
		5 - Heat
		6 - Energy
		7 - Poison

3/19/2006 - giwo (0.98-3.5m [3.6 RC])
	Moved create menu structs to skills.h as they don't need to be in global scope.
	Fixed several issues with pack horse handling
	Modified DropOnNPC so GM's can drop items directly on an NPC to be placed in their pack.
	Modified response handling and removed some superfluous code.
	Fixed a crash when UOX3 shut down due to an invalid directory entry.
	Locally declared vector3D line2D and line3D as they are only used in lineofsight.cpp
	Fixed water NPC's swimming under statics (bridges).
	Fixed some false positives that were being generated by point3::Mag3D() by using a larger storage container.

3/18/2006 - giwo (0.98-3.5l [3.6 BETA])
	Fixed an issue causing GM yell messages with trigger words in them not to be broadcast.
	Added and made use of a WanderTypes enum throughout the source.
	Added housekeys.dfn to dfndata/items/ and made house creation rely on the script entries therein.
	Optimized NPC walking a bit, and moved NPCWander handling into its own function.
	Further updated and modified calc_walk() and AdvancedPathFinding() to handle the Z plane.
	Removed CMovement::HandleRegionStuffAfterMove() as it was superfluous.
	Rewrote CMovement::OutputShoveMessage() to fix several minor issues.
	Updated CMovement::MoveCharForDirection() to reduce extra function calls and make use of CMapHandler::ChangeRegion()
	Added NEWBIE option to JS SET command.

3/18/2006 - grimson
	Fixed CHandleCombat::calcDamage() I was submitting the base damage to the defense calculation.

3/18/2006 - grimson
	Another change to CChar::Damage(), if the attacker becomes criminal make the owner of it
	criminal too.
	Changed CHandleCombat::ApplyDamageBonuses() so that elemental damage is doubled when the
	race is weak to that element, also double magic damage only on NPCs.
	Changed CHandleCombat::Kill() so that only not tamed animals eat their victims.

3/18/2006 - grimson
	Changed CChar::Damage() to also display the damage to the owner of the attacker, so a
	player can also see the damage his pet does.

18th March, 2006 - Maarc
	Removed some unused properties/methods of the console that have never been used
	Begun construction of some placeholder code for party related works, not committing the factory code until some testing can occur first
	Essentially, this just updates the handling for it which currently does nothing, and gives an insight into how it would be done

18th March, 2006 - Maarc
	Adjusted SE_ApplyDamageBonuses and SE_ApplyDefenseModifiers as they were using the same parameter for attacker and defender
	Updated documentation somewhat

3/18/2006 - grimson
	I only added part of the ApplyDefenseModifiers() and ApplyDamageBonuses() changes to CVS,
	fixed it now.

3/18/2006 - grimson
	Changed ApplyDefenseModifiers() and ApplyDamageBonuses() to make shure they return ints.
	Changed SE_ApplyDamageBonuses() and SE_ApplyDefenseModifiers() to fix invalid damage values
	when a script sends float values.
	Changed criminal() so it also takes the murderer state into account, as this overrides the
	criminal flag.

	JS:
		Updated MagicDamage() in level1targ.js, it now uses the new functions and should be
		equal to the source version of MagicDamage().

3/18/2006 - grimson
	cScript::OnEquip() and cScript::OnUnequip() were adding the parameters in the wrong order.

3/17/2006 - grimson
	Changed AdjustRaceDamage() to also use the new ApplyDefenseModifiers() function.

3/17/2006 - giwo (0.98-3.5k [3.6 BETA])
	Modified Gates so they are decayable by default, and will only decay if decayable.
	Updated GM and Counsellor privs in commands.dfn, also placed a bit guide for the PRIVS value.
	Fixed LoS checks on the Z plane in multis.
	Fixed an issue causing GM broadcasting (! then space) not to function.
	Removed some superfluous speech code.
	Changed the command YELLALL to YELL
	Removed several old DFN tags that were no longer used.
	Removed default PRIV=0 tag from baseitem.dfn, as it would unset decayable value.
	Changed PRIV1= tag to PRIV= in npc.dfn.

3/17/2006 - grimson
	Catch negative damage values in cMagic::MagicDamage() and apply 1 damage in that case.

3/17/2006 - grimson
	Moved defense modifications into CHandleCombat::ApplyDefenseModifiers().
	Moved damage bonuses into CHandleCombat::ApplyDamageBonuses().
	Moved the calculation of the hit location from CHandleCombat::DoHitMessage()
	into CHandleCombat::CalculateHitLoc().
	Added ReactOnDamage() to CCHar, currently it only makes the char attack the
	char that inflicted the damage.
	Reduced CChar::Damage() to show, the damage, apply the damage, handle the
	reputation effect, the peace breaking effect and the chars death.

	JS changes:
	New JS functions:
		damage = ApplyDamageBonuses( damageType, attacker, defender, fightSkill, hitLoc, baseDamage );
			Note: Attacker and defender need to be valid chars.
		damage = ApplyDefenseModifiers( damageType, attacker, defender, fightSkill, hitLoc, baseDamage, doArmorDamage );
			Note: Attacker can be NULL, fightSkill will then be ignored.
	New char function:
		mChar.ReactOnDamage( damageType, attacker );
			Note: damageType is currently unused.
	Changed char function:
		mChar.Damage( amount, attacker, doRepsys );

17th March, 2006 - Maarc
	Changed the INI loading code so that it uses a Script rather than custom code

3/17/2006 - grimson
	Changed CPICreateCharacter::newbieItems() so that it uses the newbie.dfn entrys [DEFAULT MALE] and
	[DEFAULT FEMALE] to add the basic clothing to new chars, and added those entrys to newbie.dfn.
	Changed newCarveTarget() so that it uses the new [CARVE HUMAN] entry from carve.dfn to create the
	body parts, and added this entry to carve.dfn. Note: the second value used on the ADDITEM tags
	in the [CARVE HUMAN] entry is not an amount, it's the dictionary entry used for naming the body
	part.

3/16/2006 - giwo (0.98-3.5j [3.6 BETA])
	Fixed an issue with AdvancedPathFinding() causing NPC's to flee constantly.
	Fixed an issue with NPC fleeing that checked against Strength rather than MaxHP.
	Defaulted weather damage to every 60 seconds (rather than every second)
	Fixed an issue causing a message to display damage taken by weather when no damage was taken.
	Fixed an issue with CRace causing a race with no elemental damage types to have most/all elemental damage types.
	Fixed a server crash in magic.
	Fixed an issue causing items in a paperdoll to not be targetable.
	Fixed an issue with LoS causing items to not block on a diagonal plane.
	Fixed an issue causing multi's not to block LoS.
	Minor fixes, cleanups, and optimizations to LineOfSight.
	Modified DoubleClick() so a character inside a multi can open an item outside a multi (as long as he can see it).

16th March, 2006 - Maarc
	Updated playDeathSound to simplify some of the code for males/females
	Updated code so that we don't use MFLAGGET/MFLAGSET - apparently we have a std::bitset class that we can use!  Also makes it somewhat more readable as well.  Cheers Punt for the suggestion.
	Renamed __ACCOUNTSADM_BLOCK__ to CAccountBlock
	Removed dead code from accounts (stuff that was just never called at all)
	Removed Get/Set Word/Bit/BitRange from CBO, as it's not being used
	Removed genericDWords from CBO, as they're not being used, and are largely superfluous with custom int/string tags in JS

3/15/2006 - giwo (0.98-3.5i [3.6 BETA])
	Fixed an issue causing pet guarding on items in a house not to function.
	Fixed an issue causing boat items not to get added to the multi.
	Cleaned up CPIDoubleClick::Handle() routine.
	Fixed an issue allowing players to place their items in invalid locations.
	Fixed a possible issue causing doors to block LoS to themselves.

3/14/2006 - giwo
	Fixed a server crash caused by my recent changes to Location-Targeting spells.

3/14/2006 - giwo (0.98-3.5h [3.6 BETA])
	Fixed a combat issue allowing enemies to fight if on the exact same location but a different Z.
	Modified guard handling so when guards are globally deactivated any existing guards will not teleport.
	Fixed an issue causing NPC's to be invisible.
	Fixed some issues causing items behind a door to be within a characters LoS.
	Adjusted erroneous Z values in house.dfn (Causing outer doors to not be part of the multi).
	Added a LineOfSight() check to prevent opening containers on the other side of walls.
	Modified the inMulti() routine to take into account tile height.
	Simplified newCarveTarget() a bit.
	Fixed a possible issue when calculating multi tile heights.
	Fixed an issue causing Characters to "fall" immediately after being placed on their new boat.
	Further cleanups and rewrites to CMulHandler and its related structures.

3/15/2006 - grimson
	Added PHYSICAL to WeatherType enum, so we can also use it represent physical damage.
	Changed CChar::Damage() to handle armor and resistance effects, it also handles the repsys,
	peace breaking, elemental weakness, displays the damage, creates a reaction if an attacker
	is given and calls CChar::Die() if the hp drop below 1. It takes the following values:
		SI16 damageValue	- The amount of damage to be done.
		CChar *attacker		- The char that caused the damage.
		bool doRepsys		- Do reputation handling (criminal, murderer, karma and fame).
		WeatherType damageType	- The type of damage, use NONE to ignore armor/resistance, use
					  PHYSICAL to use normal armor, anything above is elemental damage.
		SI08 hitLoc		- The hit location, use 0 for the complete body or -1 to randomly
					  calculate the hit location.
		UI08 fightSkill		- The skill used to create the damage.
		bool doArmorDamage	- Damage the armor part that has been hit.

	The JS function .damage can also take all of these values.

	Changed CChar::Die() to handle the death of chars, it takes two values:
		CChar *attacker		- The char that caused the death.
		bool doRepsys		- Do reputation handling (murderer, karma and fame).

	Updated the usage of CChar::Damage() in most areas to reflect the changes and removed reputation
	and death handling in those areas as this is now taken care of by CChar::Damage().

3/14/2006 - grimson
	Fixed item IDs for human corpses in newCarveTarget().

3/13/2006 - giwo (0.98-3.5g [3.6 BETA])
	Converted Numeric DFN's to a Signed Long rather than unsigned by default for *nix compatability.
	Merged jr's fixes for cygwin compatability and fixing some minor gameplay issues.
	Modified ModelBoat() to automatically move you off the boat (if near land).
	Fixed a crash bug involving boats.
	Changed several calls checking against type IT_PLANK to CanBeObjType( OT_BOAT ).
	Fixed an issue causing boat holds to "explode" when opening them.
	Fixed an issue causing containers inside containers on the ground to be "too far away".

3/13/2006 - grimson
	Changed CBaseObject::SetWeight() and CBaseObject::SetID() so they also update the weight
	of the container the item is in, when it is an item and when it is within a container.

13th March, 2006 - Maarc
	Altered the CBO resistances code to use an array rather than a number of variables
	Note that we're still only saving out a subset of these resistances, because only a subset ever get checked at the moment
	This could easily change in future, with people wanting to use other elemental stuff
	Adjusted CItem::CopyData() so that it copies all the WeatherDamage values instead of only a couple
	Upgraded the container size on weatherBools, as the number of weather entries has moved beyond a UI08 size

3/13/2006 - grimson
	Changed CPICreateCharacter::newbieItems() so that the default items aren't placed inside
	the players backpack until they have their final ID, to prevent the adding of wrong weight
	values.

3/12/2006 - grimson
	Changed the z value for various LineOfSight() calls so that we actually check whether
	we can see the face of the targeted char instead of his feets.

3/12/2006 - grimson
	Added element resistance calculation to weather damage.
	Fixed calcElementDef() and getElementDef() so that the chars basic element resistance
	is always added.
	Changed MagicDamage() so that we always do at least a little bit of damage.

3/12/2006 - grimson
	Removed DamageTypes enum and added POISON to WeatherTypes.
	Renamed DamageResist functions into ElementResist and moved them to cBaseobject.cpp.
	Renamed DFN tag DAMAGERESIST to ELEMENTRESIST and use it also for items.
	Added DFN tag POISONDAMAGE to items so that they can also do poison damage on attacks.
	Added functions calcElementDef(), getElementDef() and checkElementDef() to combat.cpp
	to calculate the resistance against elements similiar to the def value of armor.
	Changed AdjustRaceDamage() to also take into account the elemental resistance of the target.
	Use calcElementDef() in MagicDamage() similiar to calcDef() in calcDamage() to take the
	elemental resistance into account.

3/12/2006 - giwo (0.98-3.5f [3.6 BETA])
	Removed CMulHandler::AverageMapElevation() as it was superfluous.
	Removed CTileUni height in favor of top, to reduce calc_walk() calculations.
	Removed CTileUni id as its use was unnecesarry.
	Rewrote CMovement::calc_walk() to improve overall readability and speed.
	Merged CMovement::calc_WaterWalk() with calc_walk().
	Removed higher() as UOX_MAX() does the same thing.
	Removed CMovement::validNPCMove() as it was superfluous.
	Modified house placement to make it impossible to place a house on the ocean.

12th March, 2006 - Maarc
	Changed some id >= 0x4000 comparisons to CanBeObjType( OT_MULTI ), for clarity
	Fixed a bug with applying NPC sections where if you specified ALCHEMY values, it would fail to apply correctly

3/11/2006 - giwo (0.98-3.5e [3.6 BETA])
	Fixed an issue causing items with no layer to not change the weight of a character.
	Fixed an issue causing spells that require a targeted location not to function.
	Fixed an issue allowing one to build a house or boat far from their location.
	Fixed an issue allowing one to build a multi directly on top of another multi.

3/11/2006 - giwo (0.98-3.5d [3.6 BETA])
	Removed CChar::TempWeight() as it was superfluous.
	Fixed an issue causing Trade Windows to add weight to characters.
	Fixed some minor issues with weight calculations.
	Removed CChar:: bools2 and made more use of the bools value.
	Renamed CMapStuff to CMulHandler to better describe its function.
	Renamed MapStaticIterator to CStaticIterator to meet class naming standards.
	Renamed MultiItemsIndex to MultiItemsIndex_st to meet structure naming standards.
	Removed MapData_st fileSize as it was superfluous.

3/11/2006 - grimson
	Fixed a bug where buying the whole stock of an item deleted that item from the vendors container.

3/11/2006 - grimson
	Added new ini setting:
		USECHARRESISTANCE=# If this is set to 0 the chars resistance won't increase by itself.
	Slowed the increase of resistance quite a bit down.

3/11/2006 - grimson
	Added in first versions of fire, cold, energy and poison resistance, it's currently used
	in cMagic::MagicDamage() and cMagic::PoisonDamage(). You can set the resistance for npcs
	using a new DFN tag:
		DAMAGERESIST=# # # # 	Where the first number is fire, the second cold, the third energy
					and the last number poison resistance.
	The resistance for a damage type will rise everytime you get hit by this damage type, but the
	higher your resistance already is the slower it will rise.

3/11/2006 - grimson
	Removed version number for chars.
	Added .tempWeight JS property to chars, so you can safely modify the weight of chars in scripts.
	Added calcLowDamage() and calcHighDamage() functions to combat.cpp and use them in
	CPStatWindow::SetCharacter() to set the DamageMin and DamageMax values.

3/11/2006 - grimson (0.98-3.5d [3.6 BETA])
	Added a version number to chars, it is defined in DEFCHAR_CHARVERSION and use it in
	CChar::DoVersionUpdates() to allow forced updates. Used this to force a weight recalculation
	on possibly bugged chars.

3/11/2006 - grimson
	Don't save the weight in cChar.cpp, it's already saved in cBaseobject.cpp.
	Fixed a bug where items without a layer didn't add to the chars weight.
	Fixed a bug in CWeight::calcCharWeight() that added the weight of the backpack
	twice.
	Changed CMapHandler::Load() so that PostLoadProcessing of chars is done after
	PostLoadProcessing of items, or else the forced recalculation of the chars
	weight doesn't work.

3/10/2006 - giwo (0.98-3.5c [3.6 BETA])
	Modified CMapStuff SeekLand() and SeekTile() to return a reference rather than force one to pass an object to set.
	Modified CMapStuff SeekMulti() to return the length rather than force one to pass a value to set.
	Removed MapStaticIterator::GetTile() as it was superfluous.
	Removed CMapStuff IsTileWet(), DoesTileBlock(), and IsTileSurface() as they were superfluous.
	Removed CMapStuff TileMem and MultisMem, replacing them with functions to return the same data.
	Changed MultiItemsIndex lz and hz to SI08 values.
	Changed MapStaticIterator GetPos() to return an SI32.
	Removed MapStaticIterator tileid as it was superfluous.
	Modified UOXFile::eof() to return a bool rather than an int.
	Miscellaneous minor changes and cleanups.

3/10/2006 - grimson
	Added two sysmessage when feeding a pet.

3/09/2006 - giwo (0.98-3.5b [3.6 BETA])
	Fixed a crash when using ClilocMessage().
	Fixed an issue when climbing stairs.
	Fixed some issues with TriggerWord handling (more work needs to be done on this).
	Modified A* Pathfinding to work properly with our NPC's PathToFollow queue.

3/08/2006 - giwo (0.98-3.5a [3.6 BETA])
	Began rewriting .mul file handling.
	Fixed an issue causing a possible crash with malformed JS scripts.
	Removed several superfluous functions from UOXFile class.
	Updated CTile and CLand to properly read in tiledata.mul
	Modified .mul file structures to meet struct naming standards.
	Changed static tile reading code to allow a variable number of statics.
	Fixed several issues with mapdiff and staticdiff handling.
	Added A* Pathfinding routine (note that it is not used in current code,
		as there are known compatability issues).

3/08/2006 - giwo (0.98-3.5)
	Fixed a possible issue caused by passing float values to JS func RandomNumber()

3/08/2006 - grimson
	Fixed CPIAllNames3D::Handle() so that SHIFT+CTRL actually shows the names of NPCs.

3/07/2006 - grimson
	Fixed LineOfSight() not working when you stand directly next to the target.
	Changed checkItemLineOfSight() so that it checks whether you can see the base or
	the top of the target item.

3/05/2006 - giwo (0.98-3.4w [3.5 RC])
	Minor changes to the JS Handling.
	Modified UOXCFile handling to remove all props and added .EOF(), .Pos(), and Length() methods.
	Fixed an issue causing items not to dissapear when 'removed
	Fixed an issue causing characters to randomly dissapear around NPC's
	Fixed an issue causing items and characters to be updated when out of range.
	Fixed a VC2005 Compile issue.
	Included a default VC 2005 Project/Solution file.

5th March, 2006 - Maarc
	Updated loading code so that it displays a more accurate percentage during loading

3/05/2006 - giwo (0.98-3.4v [3.5 BETA])
	Added the Script # to the JS Error Reporter to make debugging easier.
	Fixed an issue causing JS scripts to give useless error messages on server startup.
	Modified the region debug code to not default to on in debug mode.

3/04/2006 - grimson
	Changed cMovement::SendWalkToPlayer() so that the sequenz number fits the description
	in CPacketReceive.cpp.
	Changed CPIResyncReq::Handle() so that it actually does resend everything around
	the player.

3/04/2006 - grimson
	Added a new ini setting:
	COMBATARCHERRANGE=#  This defines the range at which archers stop charging
			     the target in combat. (Default is 7)

3/03/2006 - grimson
	Removed the IsSurface check of dynamic tiles from cMapStuff::CanMonsterMoveHere(),
	as many landscape tiles don't have the surface flag set. So it prevented valid spawns.

3/03/2006 - grimson
	It's better to recalculate and check the whole z coordinate of a stored
	location to make shure nothing has changed since we stored it.

3/02/2006 - grimson
	Added two maps to spawnregions to make checking for valid locations easier.
	Check if the z value of stored locations still match the dynamic z value of the
	current locations to track whether dynamics have changed.

3/02/2006 - grimson
	Added two vectors to spawnregions to store valid locations.
	You can define valid locations using the new DFN tags:
		VALIDLANDPOS=#,#,#
		VALIDWATERPOS=#,#,#
	Changed FindCharSpotToSpawn() and FindItemSpotToSpawn() so that they first check
	agains the list to see whether a location is valid. If the location is not in the
	list but valid it will be added to the list. If no valid location has been found
	it tries to get a random one from the list of already stored locations.

3/01/2006 - giwo (0.98-3.4u [3.5 BETA])
	Fixed some issues caused by my previous changes to objects in mapregions.
	Fixed some issues when setting containers.
	Fixed an issue causing targeting cursors to sometimes target a character when the target should be invalid.
	Fixed an issue causing JS Gumps not to function.
	Added detailed packet logging to CPITargetCursor.
	Fixed a minor issue with axe.js

2/28/2006 - giwo (0.98-3.4t [3.5 BETA])
	Added some additional debug messages to Region handling.
	Fixed a crash involving weather.
	Fixed an issue that would cause invalid objects to be left in mapregions.

2/28/2006 - giwo (0.98-3.4s [3.5 BETA])
	Modified the JS Object creation to reduce memory waste.
	Made some minor modifications to CUSTOMSTRINGTAG and CUSTOMINTTAG handling.

2/28/2006 - grimson
	Updated cCharStuff::FindSpotForNPC() to also allow spawning of water and amphibian NPCs.

2/28/2006 - grimson (0.98-3.4r [3.5 BETA])
	Replaced the WATERCREATURE tag from creatures.npc with a new tag:
		MOVEMENT=WATER for creatures that can only move in water.
		MOVEMENT=LAND  for creatures that can only move on land.
		MOVEMENT=BOTH  for creatures that can move on land and in water.
	Added calc_WaterWalk() function to movement.cpp and changed the calc_move() function so that
	it uses it for water creatures and amphibians.
	Added IsStaticWet() and CanSeaMonsterMoveHere() functions to mapstuff.cpp.
	Added FindCharSpotToSpawn() to cSpawnRegion.cpp and use it when spawning NPCs, renamed
	FindSpotToSpawn() to FindItemSpotToSpawn() and use it when spawning items.

	DFN changes:
		Updated creatures.dfn to use the new MOVEMENT tag.
		Updated tiles.dfn to set a water tile to wet that was missing that flag.

28th February, 2006 - Maarc
	Added archery/spell breakage on PC movement.  If a player successfully moves, then the spell they are casting fails, or their archery shoot timer is reset.

27th February, 2006 - Maarc
	Updated code that uses |= and &= to use MFLAGSET and MFLAGGET instead, promoting them to a higher public level.  Down to only a very few number of references like that now
	Updated the race code because it was getting out of sync with the WeatherTypes.  The two were bound together in a number of ways, and it's now more generic and tied closer

2/26/2006 - grimson
	Added functions IsStaticSurface() and IsTileSurface() to mapstuff.cpp and use them in
	CanMonsterMoveHere() to prevent spawnregions from spawning NPCs in places where they
	can not move or shouldn't be able to move to, like display cases.

2/26/2006 - giwo (0.98-3.4q [3.5 BETA])
	Fixed some areas that could possibly cause MapRegion corruption.
	Fixed a VC 2005 Compiler warning.
	Defaulted CreateItem() to set decayable to true.

2/25/2006 - giwo (0.98-3.4p [3.5 BETA])
	Added some example usages of ClilocMessage().
	Added support for packet 0xC1, sending cliloc messages.
	Added two ClilocMessage() functions, one for direct-to-socket (system) messages, and one
		for object-speech (to a socket or to all sockets in range).

2/26/2006 - grimson
	Modified cCharStuff::addRandomLoot() so that loot lists can contain links to other loot lists.

	DFN changes:
		Changed the the numbers in the LOOT tags of NPCs to random lootlist entrys.
		Fixed some GET tags in the armor dfns that were pointing to non existant items.

2/26/2006 - grimson
	Added a line of sight check to the isValidAttackTarget() function in ai.cpp so NPCs won't attack
	targets they can not see.

2/25/2006 - grimson (0.98-3.4o [3.5 BETA])
	Added another new JS property for chars:
		.setPeace=#  This handle the whole peacemaking effect, it will stop the char from attacking
			     and prevent him from attacking again until the given time is over or he got
			     enough damage.
	Updated the peacemaking.js to use the new property and to prevent peacemaking from affecting the
	char using it.
	Output a sysmessage to PCs informing them of the end of the peace effect. (Dictionarys again)

2/25/2006 - grimson
	Changed CHandleCombat::HandleNPCSpellAttack() to prevent NPCs from using spells when they
	are not allowed to attack.
	Changed cMagic::SelectSpell() to prevent PCs from using spells when they are not allowed
	to attack. Note: This doesn't effect JS implemented spells, use the .canAttack property
	in them to prevent the use of these spells.
	Output a sysmessage to PCs informing them that they can not attack. (updated Dictionaries)

2/25/2006 - grimson (0.98-3.4n [3.5 BETA])
	Changed CChar::WearItem() to not fire the onEquip event on world loads.
	Modified the TOPEACE tag so it can take a second value that sets the chance gain to recover
	from peacemaking upon hits.
	Modified cMagic::MagicDamage() and CHandleCombat::HandleCombat() to recover from peacemaking
	by calculating a chance using the chance gain set on TOPEACE and the number of hits.
	Added two new JS propertys for chars:
		.canAttack  Set this to 0 to prevent a char from attacking.
		.brkPeaceChance  Gets and Sets the chance gain to recover from peacemaking.
	Modified the .skillToProv and .skillToPeace propertys so they return the value of the corresponding
	skill for player chars.

2/25/2006 - grimson
	Fixed a bug that allowed health regeneration while the char was starving.
	Moved the bools for the fixed maxHP, maxMana, maxStamina into a bitmask.

2/25/2006 - grimson (0.98-3.4m [3.5 BETA])
	Changed the default of totame to 0x7FFF and allowed taming of NPCs with a value of 0.
	Changed DFN tags MANA and STAMINA so you can set a minimum and maximum value.
	Added new DFN tags:
		MANAMAX, STAMINAMAX  They work equal to the HPMAX tag.
		TOPROV, TOPEACE	     They set the minimum skill amount to provocate or peace a NPC.
	Added new JS propertys:
		.skillToProv  Can be used to get/set the amount of skill needed to provocate a NPC.
		.skillToPeace Can be used to get/set the amount of skill needed to peace a NPC.
	changed JS propertys:
		.maxstamina and . maxmana now work equal to the .maxhp property.
	Added the new JS propertys to the set command.

2/24/2006 - giwo (0.98-3.4l [3.5 BETA])
	Modified OnIterate() to de-allocate any JSObject it uses to free wasted memory.
	Merged all boolean values in cServerData to a single UI32 using bitmasking.

24th February, 2006 - Maarc
	Updated bitmask setting/getting code for CChar, making it a bit more friendly and less error prone
	Fixed a bug with rugs_carpets.dfn where a closing bracket was missing for object 0x1e41

2/23/2006 - giwo (0.98-3.4k [3.5 BETA])
	Fixed a crash when shutting down the server.

2/23/2006 - giwo (0.98-3.4j [3.5 BETA])
	Fixed some issues with Multi and Static height calculations.
	Moved Definition of global JS classes into CJSRuntime.
	Locked the JS Class prototypes for Garbage Collection purposes.

2/23/2006 - giwo (0.98-3.4i [3.5 BETA])
	Fixed an issue causing players to not disembark boats properly.
	Fixed an issue causing boat holds not to be made part of the multi.
	Updated the INI loading code to make it more verbose.
	Removed "Golden" health until we know when (if ever) OSI uses it.
	Created a new class, CJSEngine along with the files CJSEngine.cpp/.h
	Created a new class, CJSRuntime to allow multiple runtimes (for threading purposes).
	Moved JSObject creation and handling into CJSRuntime.
	Moved global JS Context and Runtimes into CJSRuntime.
	Moved JS Engine loading code into CJSEngine.
	Modified cScript so all JS Scripts on a runtime share a single context.
	Removed global.cpp from the project.

2/23/2006 - grimson
	Added a Dirty( UT_LOCATION ) to HandleDeath() in pcmanage.cpp to make shure the player gets
	properly updated when he dies.

2/23/2006 - grimson
	Changed TurnStuff() in boats.cpp to fix players getting stuck when turning the boat.

2/23/2006 - grimson (0.98-3.4h [3.5 BETA])
	Prevent spamming of weather packets when riding a boat.
	Added a quick fix to the inMulti() function to make boats workable again.
	Changed the HP and HPMAX tags so that you can set a minimum and maximum value.
	Removed the IsMounted() function and replaced all it's calls with the GetMounted function.
	Allow a food list to contain a link to another foodlist.

2/23/2006 - grimson (0.98-3.4g [3.5 BETA])
	Added three new ini settings:
		PETHUNGEROFFLINE=0/1 	Sets whether pets should hunger while the player is offline or not.
		PETOFFLINETIMEOUT=#  	Sets the offline time of a player in days after that a pet becomes
					wild again.
		PETOFFLINECHECKTIMER=#	Sets the intervall in seconds between checks for the player offline
					time.

	Added 2 new NPC values to CChar to state whether the char has been mounted or stabled and check those
	in the DoHunger() and the new checkPetOfflineTimeout() functions. And made them available to the JS
	engine as the 2 new propertys:
		.mounted	Can be used to get or set the mounted status
		.stabled	Can be used to get or set the stabled status

2/22/2006 - grimson
	Fixed a bug in CBase_Teleport() introduced by my earlier changes that caused teleports to other worlds
	to fail with big x and/or y coordinates.

2/21/2006 - grimson (0.98-3.4f [3.5 BETA])
	Changed JS function CBase_Teleport() to prevent player chars from being teleport into a invalid world
	which rendered the player char useless as the client cannot login using that char afterwards.
	Changed CheckCharInsideBuilding() to prevent a harmless error message when mounting a mount.
	Tweaks to the new hunger system:
		Tamed chars only hunger while the player that tamed them is online.
		Tamed mounts don't hunger when they are mounted by a player.

2/21/2006 - grimson (0.98-3.4e [3.5 BETA])
	Third part of the rewrote hunger system:
		Added a new AI type "aiANIMAL" with the number 6. This AI does nothing until the hunger level
		reaches a value of 4, then it looks for other animals, that don't have the aiANIMAL, and attacks
		them. If the hunger level goes below 2 it will attack everything in range, even player chars.
		If the animal kills it's target it's hunger level will be set to 6 again.

		Added 3 new JS propertys for chars:
			.tamedHungerRate returns or sets the rate the char hungers when it is tamed.
			.hungerWildChance returns or sets the chance of the char becoming wild if it's starving.
			.foodList returns or sets the name of the foodlist for the char.

	DFN Changes:
		Changed animals.dfn, added NPCAI=6 to all animals belonging to the race Predator.
		Changed races.dfn, all members of the race Predator change their hunger level every 300 seconds
		and get damaged for 5 points when starving.

2/21/2006 - grimson (0.98-3.4d [3.5 BETA])
	Changed cCharStuff::addRandomLoot() to look for the lootlist inside the items folder because it is there.
	Second part of the rewrote hunger system:
		Added a new DFN tag for tamed pets:
			FOOD=abc   This sets the name of the foodlist for the tamed item.
		Added a new list type for items:
			FOODLIST   Defines a list of item IDs a tamed char will accept as food.

	DFN Changes:
		Added a new file foodlists.dfn to the items folder containing an example list for horses.
		Added the horse foodlist to mounts.dfn.

2/21/2006 - grimson (0.98-3.4c [3.5 BETA])
	Do an immediate update of the charflag and the char upon taming and un-taming.
	First part of the rewrote hunger system:
		Moved hunger calculations and immediate effects to CChar::DoHunger( )

		You can now set hunger dependend on races, this uses a new tag in races.dfn:
			HUNGER=#,# the first value is the hunger rate the second the hunger damage.
				   Note for players char the settings from the uox.ini apply if
				   there are no settings specified for the race.

		Re-activated the pet-hunger system. Pets will now become hungry and upon starving
		there is a configurable chance that they may become wild again. Note: Pets won't
		die from hunger and their hunger value is reset after becoming wild again. The
		hunger rate and the chance to become wild again can be configured by a new tag:
			TAMEDHUNGER=# # the first value is the hunger rate, the second the chance in %
					of the pet becoming wild again. Note: The values are seperated
					with a space instead of a comma on this tag.
		To feed a pet just drag some food on it, currently all types of food work.

		There is also another new DFN tag:
			WILLHUNGER=# if this is set to 0 the NPC will not suffer from any type of hunger.
				     Note: You can also change that value for specific chars by using
				     the already existing .willhunger JS property.
	DFN Changes:
		Added the HUNGER=#,# description to the header of races.dfn.
		Added the TAMEDHUNGER tag to mounts.dfn with a hunger rate of 600 and a chance to become
		wild of 30%.

2/21/2006 - giwo (0.98-3.4b [3.5 BETA])
	Added AssocScript tag to effect saving (to make JS timers persistant).
	Updated JS .SetPoisoned() to take one value for changing a poison value without setting a new timer.
	Updated healing.js and made it function entirely in JS.
	Removed tempeffects case 14, 22, 23, and 24, as they are handled by JS now.
	Made items created with JS CreateBlankItem() decayable by default.
	Fixed some issues with axe.js, put tree-chopping on a timer with a skill delay.
	Fixed several issues where items were not decayable that should be.
	Defaulted JS CreateBlankItem() to set items to decayable.

2/20/2006 - giwo (0.98-3.4a [3.5 BETA])
	Added carpentry, tinker, leather repair, bow repair, bandage, sewing kit, mortar, and archery butte ID's to js_objectassociations.scp
	Corrected an issue causing Create menu's to double up when reloading the DFN's.
	Added a check to ensure a character has a backpack when coloring the "Pack" option in the popup menu.
	Fixed an issue causing character paperdolls to have incorrect spacing.
	JS Method .SetTag() now accepts boolean values (true/false).

2/20/2006 - giwo (0.98-3.4)
	Fixed an issue causing possible account corruption.

20th February, 2006 - Maarc
	Added two functions to the JS engine for characters, Heal() and Damage()
		void Damage( amtDamaged, [attacker] );
		void Heal( amtHealed, [healer] );
	The second parameters are optional, but basically it ensures that any change through here is tracked

2/19/2006 - giwo (0.98-3.3v [3.4 RC])
	Fixed a minor issue with regions.dfn causing Yew not to be considered a town.
	Added ability to xgate to a specific x, y, z. and worldnumber
	Fixed a minor issue with teleporter.js.
	Updated TeleportLocations to teleport any players pets that are inrange with them.
	Fixed a minor issue with Moongates teleporting Pets.
	Fixed a compiler error in VC 2003 caused by fabs(). Note that using fabs() should only be used with floats & doubles.
	Updated the grizzly and polar bear entries in creatures.dfn to have the proper sounds.
	Modified HandleCombat() so the target has a chance to gain Tactics when hit.
	Gave armor a 50% chance not to be damaged when successfully hit.
	Reduced armor damage to 0-1 points (rather than 0-2) when hit.
	Updated Towns to be escort regions by default in regions.dfn

2/20/2006 - grimson
	cMovement::SendWalkToOtherPlayers() didn't check if the chars are in the same world, added
	this now.

2/19/2006 - grimson (0.98-3.3u [3.4 RC])
	Renamed HandleWeatherChanges() to CheckCharInsideBuilding() as it is more apropriate.
	Stopped weather effects affecting ghosts of death players.
	Partially rewrote cMovement::SendWalkToOtherPlayers to correctly send chars and remove
	them from sight.
	Changed CPExtMove::CopyData() so the running state of player chars is correctly send.

2/19/2006 - grimson (0.98-3.3t [3.4 RC])
	Changed HandleWeatherChanges() so it updates the weather values of NPCs too.
	Changed reading the SNOWINTENSITY, RAININTENSITY and STORMINTENSITY in weatherab.dfn so that
	you can set a min and max value for the damage percent. See the examples in the updated weatherab.dfn.
	Added two new values to weatherab.dfn:
		STORMTEMPDROP this sets the amount the temperature drops when there is a storm
		RAINTEMPDROP this sets the amount the temperature drops when it is raining.

2/19/2006 - grimson (0.98-3.3s [3.4 RC])
	Fixed multiple issues in LineOfSight() that caused miscalculations of the coordinates that should be checked.
	Added line of sight checks to CPIPopupMenuRequest::Handle(), CBaseVendorResponse::CBaseVendorResponse() and
	CPIDblClick::Handle() to prevent people from using items and vendors through walls.

2/18/2006 - giwo (0.98-3.3r [3.4 RC])
	Updated the SkillCheck in HandleCombat() to be based upon the defenders tactics skill.
	Updated Skills::SkillCheck() to have a chance of success based upon the maximum skill + 100, rather than 1000.
	Fixed several issues causing spellbooks not to display properly.
	Fixed an issue causing Strength, Dexterity, and Intelligence to permanently drop when they are temporarily lowered.
	Updated skills.dfn a bit to improve skill gain between levels 0.00 and 1.00
	Added two new shield ID's to CItem::IsShieldType().
	Added spacing after fame titles to fix a paperdoll display issue.

2/18/2006 - grimson
	Fixed a small bug that prevent a storm from ending.

2/18/2006 - grimson (0.98-3.3q [3.4 BETA])
	Stopped saving the weather type in regions.wsc, this prevented changes from regions.dfn to apply.
	Make use of the SNOWINTENSITY, RAININTENSITY and STORMINTENSITY from weatherab.dfn, they are now
	used in calculating the damage a char takes from these elements. The damage is scaled by calculating
	a random number between 0 and the intensity, this number is then used as a percent value against
	the damage value in races.dfn.

2/17/2006 - giwo (0.98-3.3p [3.4 BETA])
	Fixed an issue causing the Snooping skill not to function.
	Fixed an issue causing GM Polymorph Menu not to function correctly.
	Fixed an issue causing Doors not to be added to the house they were part of.
	Moved the Multi check to containers specifically rather than on any item use, to enable use of house signs and doors from outside.

2/17/2006 - giwo (0.98-3.3o [3.4 BETA])
	Fixed an issue causing characters to randomly fall through house floors.
	Added a check to ensure a character cannot open a container unless he is in the same house it is.
	Removed JS Function RaceGate() as CChar property .race does the same thing.
	Removed JS Function SubStringSearch() as .match() does the same thing.
	Removed JS Function ConsoleMessage() as Console.Print() does the same thing.
	Removed JS Function ScriptPrintNumber() as Console.Print( number.toString() ) does the same thing.
	Removed JS Functions GetCommand() and GetCommandSize() as they were superfluous.
	Removed JS Functions CreateBuffer() DestroyBuffer() and SendBuffer() as the new Packet class handles that.
	Removed JS Item & Character property .raceID as .race does the same thing.
	Removed JS Item & Character property .privateword.
	Added a blank deed to items.dfn.

2/17/2006 - giwo (0.98-3.3n [3.4 BETA])
	Moved Skills::TinkerAxle out to JS.
	Moved Skills::TinkerAwg out to JS.
	Moved Skills::TinkerClock out to JS.
	Moved TinkerSextant functionality out to JS.
	Removed several item types from itemtypes.dfn as they are now handled by JS.

2/17/2006 - grimson (0.98-3.3m [3.4 BETA])
	Light and weather effects now also work on NPCs.
	Added 3 new JS events:
		onLightChange( mChar, lightLevel )
		onWeatherChange( mChar, weatherId )
		onTempChange( mChar, temperature )
	These events also work on the global script id and get called for players and NPCs.

2/17/2006 - grimson (0.98-3.3l [3.4 BETA])
	Rewrote the doLightEffect() function, it now uses the current light level to
	scale the light damage, it also respects the LIGHTLEVEL setting from races.dfn
	and it will stop doing light damage if you are inside a building.
	Added a the possibility that a char gets hit by a lightning during a storm,
	this is controlled by the LIGHTNINGAFFECT, LIGHTNINGDAMAGE and LIGHTNINGCHANCE
	settings in races.dfn.
	Added storm to the IsRaceWeakToWeather() JS function.

2/17/2006 - grimson
	Fixed some bugs in calculating the heat/cold damage in doWeatherEffect().
	Rain now lowers the current temperature by 5, a storm by 10.
	Moved the sending of the light level and weather status from startChar() into
	CChar::Teleport() by adding a force forceUpdateLight option to checkRegion().

2/17/2006 - grimson (0.98-3.3k [3.4 BETA])
	Added cMapStuff::inBuilding() function to determine wheter a given set of coordinates
	is inside a building. I does this by checking whether there is a static or multi above
	the coordinates.
	Added inBuilding() and SetInBuilding() functions to CChar and set it on movement and
	teleport.
	Use the new inBuilding() function to stop/start weather effects as soon as a player
	enters or leaves a building.
	Send the light level and weather status directly after a player log's in.

2/16/2006 - grimson
	Changed cWeatherAb::DoPlayerStuff() to reset weather effect timers if needed.

2/16/2006 - grimson (0.98-3.3j [3.4 BETA])
	Fixed VC6 build errors (thanks to giwo).
	Wrote all available race settings into the header of races.dfn and documented a few of them.
	Rewrote parts of the weather system:
		Added weather type storm.
		Heat wave and cold snap are calculated once per uo day and set the temperature to a fixed value
		between MAXTEMP and HEATINTENSITY resp. COLDINTENSITY and MINTEMP.
		Storm, Snow and Rain are calculated oncer per uo hour.
		Rewrote doWeatherEffect() to better seperate the different weather effects and to change the way
		they are calculated.
		Added new settings to races.dfn:
			HEATLEVEL - Sets the minimum heat at which the race get's damaged.
			COLDLEVEL - Sets the minimum cold at which the race get's damaged.
			STORMAFFECT - Defines if the race is affected by a storm
			STORMDAMAGE - Defines the damage a race takes from storm
			STORMSECS - Defines the interval at which the races takes damage from a storm.

16th February, 2006 - Maarc (0.98-3.3i [3.4 BETA])
	Committed some fixes to giwo's last commit (missed some changes in cScript.cpp that was blocking people from compiling)
	Removed a lot of commented stuff.  Dead code that's not used any more and things like that have been reduced
	Begun damage/healing tracking support.  All places in C++ code should be covered (will need to update JS engine).  Healing
	 and damage is now tracked per character, so that they can find out who has damaged/healed them the most.  If healing/damage
	 hasn't occurred in the past 5 minutes, they get taken off the list
	An offshoot of the damage tracking stuff is a change to combat.  Fame/karma/kills has been moved into CBaseObject, because in
	 future, we'll look at tracking fame/karma/kills updates for weapons and armour (so if you kill repeatedly with a sword, the
	 sword's kill count increases)
	Much of the fame/karma/kills stuff isn't done, and currently, we don't take advantage of the damage tracking.  Future
	 progressive updates will help with karma/fame parcelling on death, and to help NPCs make smarter decisions in combat
	Broke out packet 0xBF into a CPI class of it's own.  Rather than making it a huge monolithic class, it internally hands it
	 off to other packet handling classes


2/15/2006 - giwo (0.98-3.3h [3.4 BETA])
	Marked StringToNum(), NumToString(), NumToHexString() for later deletion, please use built-in JS method .toString() and function parseInt() in their place.
	Updated all JS files to use toString() and parseInt().
	Implemented JS props .stone and .master for Guilds.
	Removed the following JS functions as they are superfluous.
		IsRegionGuarded
		CanMarkInRegion
		CanRecallInRegion
		CanGateInRegion
		GetGuildType
		GetGuildName
		SetGuildType
		SetGuildName
		SetGuildMaster
		GetNumGuildMembers
		GetGuildStone
		GetTownMayor
		GetTownRace
		SetTownRace
		GetTownTax
		GetTownTaxResource
		SetTownTax
		SetTownTaxResource



2/15/2006 - giwo (0.98-3.3g [3.4 BETA])
	Changed create.dfn handling so ID's of 0 (default) display nothing on the gump.
	Updated create.dfn menu's with "Previous Menu" entries.
	Removed resource counts before launching create menu's, as the create menu handles that.
	Added LEATHER resource type for create.dfn
	Added cloth ID's to CLOTH resource type.

2/15/2006 - grimson
	Fixed 3D client crashes with CChar::talkAll() and  CChar::talk(), when the text color
	is 0x0000 it will be set to the default of 0x5A.
	Changed cMagic::MagicDamage() again, so that the murder count is increased when needed
	and NPCs fight back when they get attacked with a spell.
	Fixed the text message of the evaluating intelligence skill.

2/15/2006 - giwo (0.98-3.3f [3.4 BETA])
	Moved Lockpicking skill out to JS.
	Fixed an issue causing newbie clothing to be dropped on the ground if the character had scripted starting armor.
	Added Multiple-ID resource handling for create.dfn.
	Fixed some create.dfn items that had overlapping numbers.

2/14/2006 - grimson (0.98-3.3e [3.4 BETA])
	Added a rounding function for numbers and use it in the doLight(), command_getlight() and
	doWorlLight() functions.
	Moved WillResultInCriminal() from combat.cpp to uox3.cpp as it is not limited to combat situations.
	Changed cMagic::MagicDamage() so that attackers can become criminal and murderers.
	Changed CHandleCombat::StartAttack() so that attacking NPCs can become criminal.

2/14/2006 - grimson
	Changed the number for British weather because it was the same as the Southern Montain.

2/14/2006 - grimson
	Changed the checkRegion() function to prevent useless guard messages when you
	go from one unguarded region to another unguarded region.
	Made a few changes to regions.dfn.
	Changed the getlight command, so it returns the correct value when the region
	has a weather system.

2/14/2006 - grimson
	Changed CWorldMain::doWorldLight again, so the light level will actually reach
	the LIGHTBRIGHTLEVEL and LIGHTDARKLEVEL values.

2/14/2006 - grimson
	Removed checkRegion() from startChar() as it isn't needed.
	Fixed the GM Locations menu in travelmenu.dfn so you can travel to the jail cells again.
	Fixed the release time check in JailCell::PeriodicCheck().

2/13/2006 - grimson (0.98-3.3d [3.4 BETA])
	Made shure to start world timers on server startup.
	Changed startChar() to do a checkRegion() directly after a login.
	Changed CWorldMain::doWorldLight to actually take the current time into account
	when calculating the light level.

2/14/2006 - grimson
	Added the dungeons to the regions.dfn, so LIGHTDUNGEONLEVEL from the ini is correctly
	applied to them.

2/13/2006 - giwo (0.98-3.3c [3.4 BETA])
	Fixed an issue causing stats to almost never increase.
	Modified skills.dfn SKILLPOINT to use ,'s for seperators.
	Added an additional option to SKILLPOINT to specify for each level how much skill to gain on success.
	Moved Meditation skill out to JS.
	Moved Inscription skill out to JS.
	Removed EngraveAction() as it did not function and custom skills can be added in JavaScript.
	Moved MAKESHOP command out to JS.

2/12/2006 - giwo (0.98-3.3b [3.4 BETA])
	Modified DFN reloading so it reloads teleport.scp as well.
	Modified CheckSkill() so GM's can now gain skills by using them. (Note they will still never fail).
	Added NPCMOVEMENTSPEED to the UOX.ini to allow customization of NPC movement speeds.
	Changed CORPSEDECAYTIMER to default to 900 seconds, and made use of it in CreateCorpseItem().
	Removed CServerData::PlayerCorpseDecayMultiplier() as it had no matching uox.ini entry.
	Added JS character property .attackFirst
	Moved Peacemaking skill out to JS.
	Moved Musicianship skill out to JS.
	Moved Enticement skill out to JS (Note that OSI seems to have replaced this with Discordance).
	Moved Provocation skill out to JS.

2/12/2006 - giwo (0.98-3.3a [3.4 BETA])
	Fixed an issue causing Large Dragon Ship deeds to not function.
	Stopped CChar from saving HP as CBaseObject handles saving hitpoints.
	Removed GetItems() as it could cause data corruption.
	Modified getItem() and findItem() a bit and renamed them to GetItemAtXYZ() and FindItemAtXYZ()
	Fixed some issues with pitcher.js
	Fixed some minor cooking issues, and removed cSkills::HandleCooking() as JS now handles cooking.

2/12/2006 - grimson
	Added another JS function:
	GetItems( x, y, z, world, range) - returns a list containing all items withing
	"range" of the given coordinates in the given world. You can go through the list
	by using the FirstItem()/NextItem()/FinishedItems() syntax.

2/12/2006 - grimson
	Added two new JS functions:
	FindItem( x, y, z, world, id) - returns the item with the "id" that is on the
	"z" level and closest to the coordinates of x and y. Or NULL if no item is found.
	GetItem( x, y, z, world) - returns the item that is on the given coordinates or
	NULL if there is no item.

2/12/2006 - grimson
	The current HP and (if present) the fixed maxHP will now be saved on worldsaves.
	Added two new DFN tags for NPCs and Items: CUSTOMSTRINGTAG and CUSTOMINTTAG with
	them you can specify custom tags inside the DFNs and use them in JS scripts.

2/11/2006 - grimson
	Updated the CPUpdateStat function to use the GetMaxHP, GetMaxStam and GetMaxMana
	for sending the respective values instead of sending the strenght, dexterity and
	intelligence values.

2/11/2006 - giwo (0.98-3.3)
	Added 'set DEF (items), ARMOR (chars), and LAYER (items) commands.
	Modified 'setscptrig so it accepts 0 as a value even if no script 0 exists.

2/11/2006 - grimson (0.98-3.2r [3.3 RC])
	Added fixed maximum HP for chars. You can set it by a new dfn tag "HPMAX" or by the
	.maxhp JS property. Setting a negative value via the .maxhp JS property will reset
	the fixed value.
	Updated the set command to make use of the .maxhp JS property.

2/11/2006 - grimson
	Removed teffect.cpp from the VC6 workspace, as it no longer exists.
	Modified the flags of display cases via the tiles.dfn to prevent NPCs from walking on them.

2/11/2006 - giwo (0.98-3.2q [3.3 RC])
	Added JS property .isShop to transform an NPC into (and back from) a shopkeeper. (Grimson)
	Fixed some issues causing flagging not to be updated after setting flags in JS.
	Added error-checking when an invalid script entry is called with the GET tag.
	Modified AR statwindow reporting to give larger numbers.
	Updated some DFN armor defense ratings in items/gear/armor/

11th February, 2006 - Grimson (committed by Maarc)
	Fixed a bug with IsNeutral/SetFlagNeutral not comparing against the same flag type
	Fixed a bug where the wrong flag number is sent to the client for Neutrals

2/10/2006 - giwo (0.98-3.2p [3.3 RC])
	Re-added IsNeutral() Character flag as well as .neutral JS character property.
	Fixed an issue causing items to "bounce" when being dropped on the same character they were picked up from.
	Fixed an issue causing Ghosts to be bugged after a server restart.
	Modified newbie item creation so scripted items take precedence over default clothing.

2/09/2006 - giwo (0.98-3.2o [3.3 RC])
	NPCFlag now saves to the worldfile.
	Fixed an issue causing neutral animcals to never appear innocent when in town.
	Fixed an issue causing tamed animals to not carry their owners flag.
	Added support for invulnerable (yellow) flagging.

2/09/2006 - giwo (0.98-3.2n [3.3 RC])
	Overhauled the character flagging system:
		Added FlagColors enum.
		Renamed setcharflag() to UpdateFlag().
		Rewrote FlagColour() to make use of an enum and made it part of CChar.
		Made use of CChar::FlagColour() in several areas where we were doing the work manually.
		Added CChar SetNPCFlag() and GetNPCFlag() alond with cNPC_FLAG enum.
		Removed CChar IsNeutral() and SetNeutralFlag().
		Fixed an issue causing CChar Flagging functions not to return proper values.
		Replaced Dfn tag NEUTRAL with FLAG= the options for which are NEUTRAL, INNOCENT and EVIL.
		Replaced JS character property neutral with npcFlag, for which the values are 0 = NEUTRAL, 1 = INNOCENT, 2 = EVIL.
	Broke DropOnItem() into several smaller functions.
	Updated all instances of NEUTRAL in the dfn's to FLAG=NEUTRAL
	Added some FLAG=EVIL, FLAG=INNOCENT, and FLAG=NEUTRAL tags to appropriate NPC's

2/08/2006 - giwo (0.98-3.2m [3.3 RC])
	Fixed an issue causing ID and Type-based JS scripts not to run if an object had a script associated with it.
	Fixed an issue with SetTag() causing 0 and null values not to unset the tag.
	Fixed some wierdness when using the Delete() property in JS.
	Minor updates to autoStack().
	Fixed some issues with dropping items on other items in packs.

8th February, 2006 - Maarc
	Fixed wholist so that the stats link now works from it

2/08/2006 - giwo (0.98-3.2l [3.3 RC])
	Fixed a minor issue with saving tempeffects.
	Fixed an issue causing objects not to default to script ID 0 (global script).
	Added onDeathBlow( pKilled, pKiller ) JS event.
	Minor code cleanups.

2/07/2006 - giwo (0.98-3.2k [3.3 RC])
	Added spawn.dfn tag PREFZ=, this sets the maximum Z influence dynamic and static items can have on spawning.
	Incorporated Grimsons fixes to CSpawnRegion to allow NPC's to spawn at the proper Z based on the static and dynamic items at their location.

2/07/2006 - giwo (0.98-3.2j [3.3 RC])
	Replaced CTEffectContainer with a call to CDataList.
	Fixed multiple issues causing temporary effects to randomly never expire.
	Fixed an issue causing mana never to regenerate completely in certain circumstances.
	Minor const correctness and signed/unsigned mismatch changes.
	Removed MOVETYPE= world tag from boats, as they should always start sitting still.
	Added a check to ensure a boat stops moving if all characters onboard leave a moving boat.
	Added TEMPSTR/TEMPSTRENGTH TEMPDEX/TEMPDEXTERITY and TEMPINT/TEMPINTELLIGENCE options to the SET command.

2/06/2006 - giwo (0.98-3.2i [3.3 BETA])
	Added some error checking to the INFO command to ensure it is not used on characters.
	Fixed an issue causing deeds (and other items) not to display their custom names.
	Modified the stealth skill spam to conform to OSI messages.
	Fixed an issue causing the POLY command to change ones skin color.
	JS Changes:
		Added character props .orgID and .orgSkin
		Changed the behavior of character props .id and .skin not to set their org* equivalents automatically.

6th February, 2006 - Maarc
	Moved maps_def Disposal to the end of CMapStuff::Load()
	Added the ability to override tiledata info for real tiles (not land)
	Bit of const correctness (CTile.Name( const char *newVal ))

2/05/2006 - giwo (0.98-3.2h [3.3 BETA])
	Fixed a possible exploit with secure trading.
	Fixed an issue causing it to be impossible to remove characters from a house ban list.
	Fixed a server crash caused by transfering house ownership.
	Updated the NPC Pathfinding code to fix some issues.
	Added a check to ensure boat items are only moved once when boats sail.

2/04/2006 - giwo (0.98-3.2g [3.3 BETA])
	Fixed an issue causing multis to calculate their size incorrectly (causing boats to drag objects not aboard).
	Updated mapstuff.cpp to fix some signed/unsigned mismatches.
	Rewrote killTrades() so it would function properly and called it when a player Logs out.
	Disallowed GM's to drop items directly on logged out players (note they can still place items in packs), as it was causing other bugs in the client.
	Documented trade.cpp

2/03/2006 - giwo (0.98-3.2f [3.3 BETA])
	Rewrote trade windows so they now function properly (Note that if you log out with a trade window open, the client will crash).
	Disabled the LoginThread as it was causing crashes and other issues.
	Minor changes to const correctness in skills.cpp
	Modified packet logging to slim down file size and make it more readable.
	Fixed an issue causing logged out characters be visible to those around them.

2/02/2006 - giwo (0.98-3.2e [3.3 BETA])
	Fixed an issue causing the statwindow not to update properly (thus not showing the proper weight/gold values).
	Continued to break LineOfSight() into smaller manageable functions.
	Removed superfluous Add()/Remove() functions from CMapHandler.

2nd February, 2006 - Maarc
	Changed a call to _hypot, as it wasn't portable.  hypotf is the portable ANSI C, but it didn't work, so rolled our own (simple sqrt of the sum of two squares)
	Made some changes to the enumeration JSObjectType, because gcc 3.3.5 was chucking a wobbly over some code
	Changed a call to _strnicmp to strnicmp to deal with a linux compile error - note, we probably don't want to use such things anyway ... convert both strings to a UString, lower() them, and compare the subsets requested?

2/01/2006 - giwo (0.98-3.2d [3.3 BETA])
	Fixed an issue causing the server to randomly crash when sailing for prolonged periods of time.
	Removed an extra RemoveFromSight() packet sent upon item deletion.
	Removed items from the MapRegion upon deletion.
	Added CMapHandler::ChangeRegion() to automatically change an objects region when location changes.

1/31/2006 - giwo (0.98-3.2c [3.3 BETA])
	Fixed an issue causing boat commands to crash the 3D client.

1/30/2006 - giwo (0.98-3.2b [3.3 BETA])
	Fixed an issue causing multi's to contain themselves
	Added some error checking to ensure a multi cannot be placed inside another multi.
	Fixed an issue causing items and characters on boats to move multiple spaces.
	Fixed an issue causing boats to lock the client.

1/30/2006 - Xuri
	Added missing hairstyle (spiked) for female elves

1/29/2006 - giwo (0.98-3.2a [3.3 BETA])
	Fixed several issues with CPOpenBuyWindow fixing an issue causing items in buy windows to display improperly.
	Fixed an alignment issue with CPItemsInContainer logging.
	Removed CItem::Sort() as it is now superfluous.
	Moved CItem::WalkXY() to CBaseObject.
	Minor updates to cSkills::RandomSteal().
	Removed JS items[]. access.

29th January, 2006 - Maarc
	Encapsulated JS class name retrieval into JSEncapsulate and switched over to using that everywhere
	Fixed a potential bug (or at least, a naughtiness) with CBase_Teleport, with premature casting
	Fixed a bug where if ApplySection() was called with an empty string, it wouldn't abort correctly (JS Engine)
	Fixed a possible issue with Karma(), where we reset on caps, but don't update our calculations
	Added necromancy, focus, chivalry, bushido and ninjitsu to skills in JS engine

1/28/2006 - giwo (0.98-3.1i [3.2 RC])
	Fixed some minor issues with LineOfSight().
	Began to break LineOfSight() into smaller manageable functions.
	Renamed SeekMap0() to SeekMap() to better represent it's ability to seek any map file.
	More fixes for const correctness.

1/28/2006 - giwo (0.98-3.1h [3.2 RC])
	Fixed a minor bug in healing.js
	Made use of the JS Method CanSee() for LoS checks in JS magic functions.
	Minor code change in tempeffects().
	Updated the version number to reflect recent changes by Maarc and Xuri.
	Fixed an issue causing JS Skills not to function if a character had a script assigned to him.

1/28/2006 - Xuri
	Some fixes for the onHungerChange code to ensure UOX3 doesn't crash when no global script is defined (Grimson)
	Added isAnimal and isHuman as JS character properties. (Maarc)
	Fix in Line of Sight-code makes line of sight-checks more reliable (giwo)

1/27/2006 - Xuri
	OnHungerChange JS event will now execute both for hunger level increase as well as decrease, and will also work as global script (Grimson)

1/26/2006 - Xuri
	Hungercheck for players should now be working again (Grimson)

26th January, 2006 - Maarc
	Fixed a bug with clumsy JS (visibility not resetting properly)
	Added JS implementation for heal and feeblemind
	Added JS implementation for magic arrow, but it relies on MagicDamage(), which is not completely implementable (missing Karma, Fame and CPDisplayDamage)
	Added a ValidateObject() function to the JS engine, that behaves the same as it does in the C++ code
	Updated 'set command to support setting of health (via health or hp)
	NOTE: Tweak seems to be broken (the buttons don't fire anything), and I have no idea why
	NOTE: Heal is currently a vampiric heal (some health is subtracted from the caster to heal the target).  This is *not* a new behaviour.
	NOTE: Tweaked up magic arrow damage (a GM mage was doing less than 4 damage every time).
	Old magic arrow formula
		baseDamage	= 2 + Random( 0, 1 )
		mageryMult	= (Magery / 2000) + 1 (maximum multiplier, 1.5)
		Damage Dealt	= baseDamage * mageryMult - EvalIntCheck

	New magic arrow formula (JS Only!)
		baseDamage	= 2 + Random( 0, 5 )
		mageryMult	= (Magery / 2000) + 1
		DamageDealt	= baseDamage * mageryMult - EvalIntCheck

	The EvalInt check has changed, as well (with the JS code, not the C++ code.  All non-JS spells still adhere to this old standard).
	Previously, a successful check would always draw off a fixed amount of damage ( 10% of your skill level )
	Adjusted the JS socket property for characters, so that it returns an explicit NULL object if there is no socket attached
	NOTE: Researching into JSExtendedClass instead of JSClass, so that we can implement equality testing (like, attacker != caster sorts of things)


25th January, 2006 - Maarc
	Moved checkkey(), processkey() and cl_getch() from uox3.cpp into CConsole methods
	Added a key/command handler console exposure to the JS environment (involves a secondary runtime because of threading!)
	Note: Creating/editing world objects through this environment is not thread safe, and may cause errors
	Modified Console.PrintDone() and Console.PrintFailed() to take an optional boolean parameter as to whether it is printed instantly, or queued up
	Added functions Console.BeginShutdown() and Console.Reload( intVal )
		BeginShutdown() takes no parameters
		Reload() takes a single parameter, with the values of
			0	Reload INI
			1	Reload Accounts
			2	Reload Regions
			3	Reload Spawn Regions
			4	Reload Spells
			5	Reload Commands
			6	Reload Definition Files
			7	Reload JS
			8	Reload HTML
	Included an example script that takes the old 1->9 keys and implements them through the new JS routines
	Included an example script that takes the old shutdown keys and implements them through the JS routines
	Couple of prettying up with the loading code and what it displays
	Fixed an error with validation of skin and hair colours with human races (my mistake!)
	Fixed a dyed underwear issue with newly created players (Xuri)

1/23/2006 - Xuri
	Added new JS event: onCharDoubleClick( pUser, targChar) - allows overriding doubleclicking of characters
	Added new JS event: onSkillGump( socket ) - allows overriding the client's request to open the default skillgump
	Added new JS event: onCombatStart( currChar, targChar ) - allows overriding combat completely
	Added new JS event: onCombatEnd( currChar, targChar ) - allows overriding what happens when combat ends
	JS Event space in cScript expanded from 64 to 96 (Maarc)

22nd January, 2006 - Maarc
	Added a P_TIMESTAMP define to Config.h, for timestamping packet logs (through the use of RealTime)
	Removed unnecessary defines from Config.h
	Fixed a typo or two
	Removed some debug code I committed by accident
	Our packet logs were generating 7 column data, not 8!
	Updated some packet notes + code (0xA9 and 0xB9 packets) to deal with elves stuff (based on http://www.uox3.org/forum/viewtopic.php?t=748&highlight= )
	Updated CPCharAndStartLoc to log a few more flags
	Added a detailed Log routine to CPEnableClientFeatures
	Moved Capped() in pcmanage.cpp to higher upwards
	Changed CPICreateCharacter::Log to dump out hex values for body/skin colours
	Added some preliminary support for elvish bodies
	Needs doing: Adding random names list 3 (elf male) and 4 (elf female) for incognito
	Updated gender IDs 0 == human male, 1 == human female (as before).  2 == elf male, 3 == elf female, 0xFF == unknown.  Potentially has JS impacts! (Gender property)
	Note: Need to experiment with gender values with CPStatWindow (see code notes)
	Note: isHuman() doesn't even evaluate current dead bodies, what is the impact?
	Renamed validHair() to validHairStyle() because we want to validate colour as well
	Added a CanSee() routine to JS based socket and character objects.  Syntax is as follows
		sourceObject.CanSee( otherObject );
		sourceObject.CanSee( targX, targY, targZ );

		otherObject can be either a character, item or socket.  If they're not on the same world or the target item is in a container, line of sight fails.
	Proper validation of hair style on creation of elvish characters

21st January, 2006 - Maarc
	Fixed an Alignment issue in dumping out CPCharAndStartLoc (converting tabs to explicit spaces)
	Turned out last byte of the packet as a real number, rather than a UI08 which is interpreting as a char
	Updated some packet notes from what I could scrounge through the net
	Added basic CPIMetrics class to read in the 0xD9 packet that gets sent
	Fixed a logging issue with CPCharAndStartLoc that wasn't taking the extra characters into account
	Fixed a logging issue with CPCharAndStartLoc that was trying to dump out location details as ASCII codes, not as strings
	Added a feature to packet logging so that it will fill a line of less than 8 bytes to 8 bytes, to even out it's display
	CPISecondLogin logging claimed to be packet 0x80, when in reality, it's 0x91
	Unknown byte in CPIFirstLogin now displayed numerically, rather than as a dodgy ASCII char
	Changed Seed IP of CPRelay to 0xFFFFFFFF
	Moved pSplit() and PackShort() from CPacketSend.cpp to CPacketReceive.cpp, given that's the only place that it is even used
	Removed some unnecessary dead code

1/20/2006 - Xuri
	Yumi-bows should now use arrows instead of crossbow bolts.

12/16/2005 - giwo (0.98-3.1g [3.2 RC])
	Fixed an issue with context menus causing one to attempt to "snoop" their own pack.
	Fixed a crash when attempting a random steal on a character with no items.
	Fixed an issue causing the 'time command to have incorrect spacing.

12/13/2005 - giwo (0.98-3.1f [3.2 RC])
	Updated CDictionary.cpp to be const correct, as well as adding some error checking to prevent data corruption.
	Removed CACHEMULS from the uox.ini as it is no longer used.
	Changed uox.ini entry SHOWHIDDENNPCS to SHOWOFFLINEPCS to better reflect its function.
	Fixed an issue with SHOWOFFLINEPCS causing offline pc's to display even if it was set to 0.
	Fixed a minor bug with HTML output when the UOX3.exe was not in the base UOX directory.
	Fixed a couple of entries in teleport.scp that would cause you to be stuck in britain sewers.
	Updated items.cpp and npc.cpp to be const correct.

12th December, 2005 - Maarc
	Further update to HowTo, making sure it works through both paths

11th December, 2005 - Maarc
	GumpInfo type 7 should ignore name, only deal with stringValue.  Code updated to reflect this (fixes AddData( str, str, int ))

9th December, 2005 - Maarc
	Howto should be fixed so it won't crash on target based commands
	Howto should also support JS commands now, at least in so far as it displays the txt file, if one exists
	Couple of sections of code updated for real multi checks.  Rather than check if the ID > 0x4000, we actually do a CanBeObjType( OT_MULTI ) instead
	Auto correct bad multis when encountered (setting to generic house / generic boat)
	***note this is untested*** Insufficient time to install the UO client, and needs to be verified by Xuri or Giwo

12/07/2005 - Xuri
	Fixed an error generating a warning about bad length in multi's (giwo)
	Made all items default to the unused (0x0000) tile (giwo)
	Changed SeekTile() to return a value indicating if it found a valid tile (giwo)

12/04/2005 - Xuri
	Fixed a bug where skillgain could happen by attempting to craft without having enough resources available
	Updated AreaCharacterFunction, AreaItemFunction and AreaObjFunc to accept both character and item objects as source-object

11/23/2005 - giwo (0.98-3.1e [3.2 BETA])
	Removed cSkills::TrackingDirection() as cMovement::Direction() does the same thing.
	Fixed a crash caused by canceling the tracking menu.
	Fixed an issue causing not all animals to be trackable with the tracking menu.
	Added support for clicking on the Tracking Arrow to stop it from displaying.
	Modified packet overloading so one cannot run both the overload and the default packet handling, as it would cause a socket error.
	Added support for selecting popup menu entries.
	Fixed a possible issue with doubled up entries in spawn.dfn and regions.dfn.
	Fixed an issue causing UOX3 to hang forever on character creation.
	Added file and function documentation to books.cpp and msgboard.cpp

11/20/2005 - giwo (0.98-3.1d [3.2 BETA])
	Added CPPopupMenu allowing for easier customization of popup menu's.
	Removed cScript::spellRegistration, commandRegistration, skillRegistration in favor of
	cScript::ScriptRegistration( string skillType ) IE ScriptRegistration( Skill ).
	Added the ability to overload Packets in the JS.
	Removed xFTP Server code as UOX3 should be a game server, not an FTP server.
	Moved spawnregions and regions into CWorldMain. (renaming them to spawnRegions and townRegions).
	Modified spawnRegions and townRegions to load in based upon the number assigned for them in the scripts.
	Added a socket variable to PlayerValues_st to remove the need to loop through online sockets looking for a characters socket.
	Fixed some minor issues with CTEffectContainer.
	Fixed an issue that could cause a characters murder decay timer to stop counting.
	Added MURDERTIME to the worldsave to make murder decay time persistent.
	Fixed some minor compiler warnings.
	Added support for compiling under Visual Studio Express 2005
	Changes to uox.ini:
		Removed USEFACETSAVES, MAP0, MAP1, MAP2, MAP3, USERMAP, FTPDENABLED,
		FTPDUSER, FTPDUSERLIMIT, FTPDBIND, FTPDROOT, FTPCENABLED, FTPCHOST,
		FTPCPORT, FTPCUSER, FTPCULFLAGS, and MAPCOUNT as they were unused.
		Added OVERLOADPACKETS option to uox.ini to toggle JS packet handling.
	JS Changes:
		Re-ordered jse_fileassociations.scp a bit to make more logical sense.
		Added PACKET_SCRIPTS to jse_fileassociations.scp
		Added event onPacketReceive( socket, packetNum, subCommand )
		Added function RegisterPacket( packetNum, subCommand ) // Note that subcommands are not yet supported.

11/19/2005 - Xuri
	Added new doors from ML-client, expanded DoorNewLocation-function to cover all doors

11/5/2005 - giwo (0.98-3.1c [3.2 BETA])
	Fixed several issues with Writable book handling.
	Modified .bok handling code (note that this will cause any old .bok files to be invalid).
	Added support for the 0xD4 (New Book Header) packet.
	Fixed some issues in /books/books.dfn causing pre-defined books not to be displayed.
	Fixed some issues in items/misc/books.dfn causing pre-defined books not to open.
	Removed CSocket authorbuffer, pagebuffer, and titlebuffer.
	Fixed an issue causing Spells not to function.
	Added JS Packet method .ReserveSize( len ); for optimization purposes.

11/3/2005 - giwo (0.98-3.1b [3.2 BETA])
	Added a JS Packet Class, usage:
		var myPacket = new Packet;
		myPacket.WriteByte( pos, byte );
		myPacket.WriteShort( pos, short );
		myPacket.WriteLong( pos, long );
		myPacket.WriteString( pos, string, len );
		socket.Send( myPacket );
		myPacket.Free();
	Fixed a logic error in handling the RefreshIP code (Grimson).
	Fixed an issue causing players to apper gray rather than dissapear when hiding.
	Fixed a login crash caused by the Updates scroll.

11/1/2005 - giwo (0.98-3.1a [3.2 BETA])
	Updated some areas of the code to conform to const correctness.
	Fixed an issue causing vendor "Buy" windows to display improperly.
	Added some more error-checking to the ClearTrades() function.
	Removed JS CChar_Freeze() and CChar_Unfreeze() as the .frozen property does the same thing.
	Removed JS CItem_SetPoison() as the .poison property does the same thing.

10/17/2005 - giwo (0.98-3.0q [3.1 RC])
	Improved the MapResource handling code.
	Improved the MapRegion handling code, reducing waste.
	Fixed a possible issue causing invalid data in the refreshQueue and deletionQueue.

10/15/2005 - giwo (0.98-3.0p [3.1 RC])
	Fixed an issue in the CChar constructor causing linux builds to not compile.
	Removed CHANCECOLOURORE and MINCOLOURSKILL from regions.dfn
	Modified cSkills::Mining() to REQUIRE ore entries for proper ore creation.
	Modified CHANCEBIGORE in regions.dfn to give a chance to get more than 1 ore at a time.
	Added a message to advise a player when his skill level is too low to mine coloured ore.

10/5/2005 - giwo (0.98-3.0o [3.1 BETA])
	Moved kills, fame, and karma from CBaseObject to CChar to save wasted memory on items.
	Fixed several warnings when compiling under gcc.
	Fixed a possible issue when duplicating a character.
	Removed several unrefrenced parameters.
	Removed several unused ENUM values.

9/29/2005 - giwo (0.98-3.0n [3.1 BETA])
	Removed an unneeded variable from characters.
	Changed JS prop murtertime to tempTime (note tempTime is currently used for spawn items and murder times).
	Made struct GumpInfo a private member of GumpDisplay.
	Changed CItem::layer to make use of the ItemLayers enum.
	Removed global const MAXLAYERS.
	Merged CTownRegion goodsell[], goodbuy[], goodrnd1[], and goodrnd2[] into a struct with a map.
	Removed RUNNING and STEP from the worldfile, as they were unnecesarry.
	Minor cleanups and fixes.

9/27/2005 - giwo (0.98-3.0m [3.1 BETA])
	Moved some more variables from Base Characters to Players.
	Organized and documented many functions in CChar.
	Changed itemLayers array to a std::map.

9/27/2005 - giwo (0.98-3.0l [3.1 BETA])
	Greatly reduced the memory taken by NPC's and Players.
	Fixed an issue causing ORE_LISTs not to load in properly.
	Fixed a possible crash bug in clearTrades().

9/23/2005 - giwo (0.98-3.0k [3.1 BETA])
	Added support for MapDiffs/StaticDiffs
	Added mapdiff entries to maps.dfn to allow customizing filenames.
	Added CPEnableMapDiffs to advise the clients of MapDiffs.
	Updated go.js to support passing a world number

9/20/2005 - giwo (0.98-3.0j [3.1 BETA])
	Fixed a minor issue with resource regions.
	Removed cSkills::BowCraft() as it was unused.
	Moved largeBuffer and largePackBuffer from local declares into CSocket.
	Updated sword.js and axe.js to work properly with 5.0.x clients.

9/18/2005 - giwo (0.98-3.0i [3.1 BETA])
	Fixed an issue causing RESOURCELOGSRESPAWNTIMER to always use default setting.
	Moved cSkills::resources into CMapWorlds() allowing it support for multiple worlds.
	Fixed an issue with SetTempVar() when setting in parts.
	Made skillnames scriptable via skills.dfn
	Fixed a crash caused by increasing the total number of skills then loading a previous world.
	Added support for BUSHIDO and NINJITSU skills (note these are not implemented yet).
	Enabled support for NECROMANCY, FOCUS, and CHIVALRY (note these are not implemented yet).
	Removed some superfluous code in uoxstruct.h
	Added First/Next/Finished wrappers for iterating through lists of Script files.
	Optimizations to the weather.dfn loading code
	Optimizations to the skills.dfn loading code.
	Optimizations to the spells.dfn loading code.
	Modified loading of creatures.dfn to load entries beyond 2048.
	Added 5 tags to creatures.dfn in place of BASESOUND and SOUNDFLAGS
		SOUND_IDLE 		- The sound the creature makes while standing around
		SOUND_STARTATTACK 	- The sound the creature makes when it enters combat
		SOUND_ATTACK 		- The sound the creature makes when attacking
		SOUND_DEFEND 		- The sound the creature makes when defending
		SOUND_DIE 		- THe sound the creature makes upon death
	Moved Sword use functionality out to JS (for carving kindling, corpses, etc )
	Moved Axe use functionality out to JS (for chopping trees, carving corpses, etc )
	Added JS item property "carveSection" and method Carve().
	Added JS Functions ResourceArea(), ResourceTime(), ResourceAmount() and ResourceRegion()
		The first 3 can be used to Get/Set system settings, using the options "LOGS" or "ORE"
		ResourceRegion() returns a resource object allowing JS to modify resource data.
	Exposed the resource data to the JS engine for modification, props are:
		logAmount
		logTime
		oreAmount
		oreTime

9/13/2005 - giwo (0.98-3.0h [3.1 BETA])
	Modified MapRegions to allow handling of a variable number of words.
	Added maps.dfn to allow customizing UOX3's map handling.
	Added MAPCOUNT to the uox.ini to specify the number of maps UOX3 uses.
	Several major internal changes to the packet handling classes.
	Fixed several integral problems with the account system causing data corruption.
	Fixed some issues causing client crashes in the 5.0.x clients.
	Fixed an issue causing a crash when attempting to add an invalid script item.
	Fixed an issue causing wierdness for players who log in as a Ghost.
	Fixed an issue causing a character to continue firing a ranged weapon when out of ammunition.
	Fixed a possible issue causing monsters to constantly attack animals.
	Modified character flagging so anything that is not a Human or Animal will never show up as blue.
	Modified the "isHuman" check to consider a GM body as human.
	Fixed an issue causing character privledges not to save properly.
	Modified CSocket pagebuffer, titlebuffer, and authorbuffer to be const correct.
	Greatly reduced the size of resource.bin (please ensure you delete your old /shared/resource.bin file).
	Made some minor modifications to reduce the worldfile size:
	(Note UOX3 is backwards compatible with previous worldfiles and will make these changes automatically)
		BEARDCOLOUR and BEARDSTYLE is now BEARD=STYLE,COLOUR and is stored in hex.
		HAIRCOLOUR and HAIRSTYLE is now HAIR=STYLE,COLOUR and is stored in hex.
		ORIGINALBODYID and ORIGINALSKINID is now ORIGINALID=BODY,SKIN and is stored in hex.
		SPLIT and SPLITCHANCE is now SPLIT=SPLIT,SPLITCHANCE.
		QUESTORIGINALREGION and QUESTDESTINATIONREGION is now QUESTREGIONS=ORIGINAL,DESTINATION.
		NPCWANDER and XNPCWANDER is now NPCWANDER=NPCWANDER,XNPCWANDER.
		SPATTACK and SpecialAttackDelay is now SPATTACK=SPATTACK,DELAY.
		PACKITEM, ROBESERIAL, TOWNVOTE, PRIVILEGES, and GUILDFEALTY are all stored in hex.

9/07/2005 - Xuri
	Added support for new mounts: giant fire beetle, hiryu, chimera, cu sidhe, mondain's steed

9/07/2005 - Xuri
	Fixed an error in a debug message that would stop UOX3 from compiling if DEBUG_WALKING was enabled.
	Fixed; UOX3 didn't retrieve the correct FY2 value for spawned NPCs using wandermode 3 (shopkeepers, for instance).
	Added JS InitWanderArea function - allows wanderareas to be dynamically reset through JS.

9/06/2005 - Xuri
	Check to see if animals have NPCAI 2 before guarding them in town when COMBATANIMALSGUARDED=1 in uox.ini

9/05/2005 - Xuri
	Fixed superfluous empty spaces after reputation titles and race names in paperdolls.
	Removed [murderer] appearing behind the character names hovering over the head of characters.

August 17 2005 - Maarc
	Altered AreaCharFunc code in cScript to also support Items
	Added "AreaItemFunction" as an equivalent to AreaCharacterFunction - perhaps break this into something a little more specific?  eg Items / Multis?
	Added JS StaticAt function - takes 4 parameters - x, y, world, [tileID] (tileID is optional - if not specified, ANY static at that location will match)
	Added JS StaticInRange function - takes 5 parameters - x, y, world, radius, tileID

8/13/2005 - giwo (0.98-3.0g)
	Added automatic removal of messageboard files when the board item is removed.
	Added in the MessageBoardMaintenance routine to automatically clean out deleted posts.
	Incorporated Grimsons fixes to call guards when a player attacks an NPC.
	Incorporated Grimsons changes to allow NPC's to become criminal and murderers.
	Fixed some possible issues in speech.cpp, hopefully correcting the elusive Speech crash bug.
	Fixed an issue causing creatures and a few other scripts not to be properly updated when reloading DFN's.
	Added a very simple Dispose() feature to CServerDefinitions, allowing for automatic cleanup of unused DFN's.
	Fixed an issue causing doors to never close if a player or ghost was standing in them.
	Fixed some possibile issues with item visibility.
	Added the ability to specify an amount with ADDITEM in create.dfn (example ADDITEM=0x1E43,15).

8/7/2005 - giwo (0.98-3.0f)
	Fixed an issue causing improper reporting on the state of a stream in UString. (punt)
	Fixed an issue causing messageboards not to display on an empty world.
	Fixed an issue causing UOX3 to lock up when posting a reply with the 3D client.
	Modified the post removal function to delete any replies to the post.
	Modified CChar::PostType to stop it from being saved (this should be on a per-session basis).

8/4/2005 - giwo (0.98-3.0e)
	Finished the rewrite to the messageboard system. Currently it should be fully functional with
		the exception of a maintenance routine to clean up the files which will be added later.
	Incorporated Grimson's Automatic-IP Updating feature.
	Added a few fixes for NPC's staying in combat after the death of their opponent. (Grimson)
	Incorporated lingo's rewrite to the CMapstuff code, this seems to have fixed the
		bug causing players to fall through the floor of their house.
	Fixed an issue causing dyed items to appear undyed when dropped on the ground.
	Fixed a possible issue with BoatSpeech.
	Fixed an issue causing quest regions not to function properly.
	Fixed some issues causing items and characters to leave "ghosts" behind.

7/29/2005 - Maarc
	Several character/item properties and one item-method added to JS (check JS Docs, 0.42)

7/16/2005 - giwo (0.98-3.0d)
	Continued work on a complete rewrite of the Messageboard system.
	Removed some unnecesarry debug code from Walking functions.

7/14/2005 - giwo (0.98-3.0c)
	Moved Poisoning skill out to JS.
	Fixed an issue causing "eternal" gold from a vendor.
	Included a fix for Trade Windows locking the client (ShadowBranch).
	Minor cleanups in trade.cpp
	Included a possible fix for an issue causing NPC's not to exit combat properly.
	Fixed an issue causing items with an amount to be created as 1 item in some situations.
	Began rewriting messageboards, meanwhile fixing a few issues causing them not to function.

6/16/2005 - giwo (0.98-3.0b)
	Added support for multiple TriggerWords in a string of speech.
	Fixed JS event inRange() so it will function as expected.
	Fixed a minor issue that caused the wrong code to be executed when updating nearby objects.

6/16/2005 - Xuri
	Added new NPCAI (5) for NPC fighters. Same as guard-ai (attacks monsters/criminals), only without the extra guard-functions.

6/14/2005 - giwo (0.98-3.0a)
	Fixed an issue causing characters to ghost after being teleported off screen.
	Fixed an issue causing mounts and other various items to add weight to characters.
	Fixed an issue causing display distortion on the Server Status gump.
	Fixed an issue causing JS onCollide event not to function for characters.
	Fixed an issue causing corpses not to decay.
	Fixed an issue causing spells not to function when a global JS script (0) was in place.
	Minor code cleanups.

6/14/2005 - Xuri
	Fixed server crash when clicking on server status button in help menu.

6/12/2005 - giwo (0.98-3.0)
	Fixed an issue causing objects not to be properly removed from their spawnregion on deletion.

6/12/2005 - Xuri
	Changed font-type and colour displayed for item-based TextMessages.

6/11/2005 - ShadowBranch
	Changed the hardcoded default starting location from 1000, 1000, 0 to 1495, 1629, 10 - which is the Sweet Dreams Inn in Britain.

6/9/2005 - giwo
   	Fixed a bug causing items not to be able to be picked up

6/8/2005 - Xuri
   	Adjusted NPCSpeed from 1.0 to 0.7 to increase their speed.

6/7/2005 - Grimson
   	Fix in void CSpawnRegion::doRegionSpawn() to spawn the correct number of NPCs as per defined in spawn.dfn

4/22/2005 - giwo (0.98-2.8h)
	Fixed an issue breaking teleport locations in Debug mode.
	Fixed an exploit allowing one to equip items from great distances.
	Caused houses to boot non-owners who log out inside.
	Fixed several issues with create menus.
	Modified BODYCOLOUR in commands.dfn to not change the color if it is set to 0.
	Added STRIPHAIR and STRIPITEMS in place of STRIPOFF in the commands.dfn.
	Caused SetName() to call Dirty() in order to update an object.
	Fixed a minor issue with SET commands.
	Added SET command MOREXYZ.

4/16/2005 - giwo (0.98-2.8g)
	Fixed an issue causing envoke (object and type associations) not to function after a JS Reload.
	Fixed an issue causing accounts to erroneously report that it is already in use.
	Fixed a possible issue caused by dropping a pilable item directly onto another pilable item.
	Fixed an issue allowing a ghost to snoop the pack of a pack animal.
	Fixed an issue causing Ghosts to "collide" with other players.
	Fixed an issue causing exploding potions to not function properly.
	Fixed an issue causing smelted ingots to not be stackable.
	Added ingots and gold to harditems.dfn to safeguard against stacking issues.
	Changed JS event onCreate() to onCreateTile() and onCreateDFN()
		Note that onCreateDFN() will be the default, only items added directly
		from the tile will use onCreateTile(). These scripts can be either scriptID 0
		or specified in harditems.dfn.

4/14/2005 - giwo (0.98-2.8f)
	Fixed an issue causing banks to add to the characters total weight.
	Fixed an issue causing SpawnRegions to not spawn anything under certain conditions.
	Fixed an issue causing '0' to be an invalid JS ScriptID.
	Fixed an issue causing item prop "owner" to not function properly.
	Fixed some possible issues with member variables not being initialized.
	Updated titles.dfn to read in much the same way the rest of the scripts do (tag=data).

4/2/2005 - giwo (0.98-2.8e)
	Moved Begging skill out to JS.
	Moved Detecting Hidden skill out to JS.
	Fixed an issue causing JS Character method SetSkillByName() to always return false.
	Fixed an issue causing AreaCharacterFunction() to invalidate any characters and sockets in the function that called it.
	Fixed a similar issue causing IterateOver() to invalidate any characters and items in the function that called it.
	Fixed an issue that would set FD_SETSIZE to a much lower value than it should be on some *nix systems. (punt)
	Replaced instances of strupr and strlwr with their UString counterparts. (punt)
	Fixed an issue causing NPC's to hunger (and die quite quickly).
	Removed many superfluous entries from uox.ini (BEGGINGTIMER, HUNGERDAMAGERATE, HUNGERTHRESHOLD, BEGGINGRANGE).
	Modified the enum cSD_TID in CServerData.h to standardize naming habits.
	Moved many timers from individual entries in CServerData into the serverTimers[] array.

3/11/2005 - giwo (0.98-2.8d)
	Included jr's fixes for cygwin compatability.
	Began work on allowing UOX to compile under MinGW.
	Many minor gcc warning fixes.

3/5/2005 - giwo (0.98-2.8c)
	Fixed a couple memory leaks.
	Fixed a couple areas where we were attempting to free memory that had already been freed.
	Bumped the rate of stamina loss on an overweight player to 5 per-step (This should be configurable in the future).

March 4 2005 - Maarc
	Updated 'validcmd so that it dumps out information about JS based commands as well

3/1/2005 - Xuri (giwo)
	Fixed a bug in HandleGuardAI() causing guards to kill cute, innocent "grey" kittens (and other animals) after taking care of any real criminals present

2/28/2005 - giwo (0.98-2.8b)
	Removed some duplication in the callGuards() routine.
	Fixed a possible issue that could cause Timer events to crash after reloading the JS engine.
	Fixed a possible issue that could cause Magic scripts to crash after reloading the JS engine.
	Fixed an issue causing some newbie clothing to be destroyed in combat.
	Fixed an issue on loading teleport.scp causing some locations to not function properly.
	Added the ability to reload entire sections of the JS Scripts.
	JS Commands will now properly reload when reloading the Commands.
	JS Commands will now properly register when reloading the JS Scripts.

2/27/2005 - giwo (0.98-2.8a)
	Fixed an issue causing 'GO PLACE to reach an invalid location after about 140.
	Fixed an issue causing teleport locations to not function properly.
	Fixed characters attempting to mount a creature when already on a mount.
	Fixed an issue causing dropping a stack of scrolls onto a spellbook to delete all of them.
	Fixed an issue causing items equipped to an NPC on creation or newbie at creation to be deleted.

2/26/2005 - giwo (0.98-2.8)
	Added support for "EQUIPITEM" tag in newbie.dfn.
	Added JS Character Prop skillToTame.
	Added JS Item Prop murdertime.
	Moved the following skill functionality out to JavaScript:
		Animal Taming
		Anatomy
		Arms Lore
		Forensics

2/18/2005 - giwo (0.98-2.7d)
	Changed all the miscellaneous #ifdef DEBUG statements to #if defined( UOX_DEBUG_MODE ) for uniformity.
	Fixed a few minor issues in cScript.cpp.
	Removed cScript::RemoveFromRoot().
	Fixed some areas where structures were not initializing variables with default values.
	Fixed an issue with a couple of the JS Scripts:
		commands/misc/repeatingcmds.js and server/resource/pitchers.js using "var" keyword
		for initializing a global variables, was causing a crash with the newer js32.dll's.

2/15/2005 - giwo (0.98-2.7c)
	Made some structures private members of their only calling class.
	Removed unused InUseEntry2()
	Moved Spirit Speak skill out to JS.
	Moved Animal Lore skill out to JS, and re-wrote it to use a gump interface.

2/10/2005 - giwo (0.98-2.7b)
	Moved Hiding Skill out to JS.
	Moved Stealth Skill out to JS.
	Moved Evaluate Intelligence skill out to JS.
	Added RegisterSkill() JS Function.
	Added .steath prop to JS Characters.
	Fixed an issue with .attacker prop causing it to return the Characters target.

2/8/2005 - giwo (0.98-2.7a)
	Added the ability to reload a single JS file to CJSMapping.
	Added SE Function ReloadJSFile, along with a new command in js, RELOADJSFILE

2/7/2005 - giwo (0.98-2.7)
	Replaced trigger.cpp/.h with CJSMapping.cpp/.h Fixing several issues with JS Scripts.
	Added .desc prop to JS Items

2/6/2005 - giwo
	Fixed an issue causing JS commands to not function or crash the server
	Fixed an issue causing findMulti() to return items that were not Multis.

February 5 2005 - Maarc
	Probable fix for Polymorph not returning to the right body (can't test)
	The newbie dagger is no longer made on new character creation - use newbie.dfn people! (Not entirely complete, as not all references to EXTRA3 were removed)
	SaveStatistics() added to CWorldMain, which only really writes out the total of characters and items, but using it to help with a fix for WorldBuilder

2/3/2005 - EviLDeD
	Fixed a small problem with VC6 not liking the initializer list for the TAGMAPOBJECT structure.

2/3/2005 - EviLDeD
	Fixed the Crash on save bug after reloading the JS.
	Moved the TAGMAP system from jsval to TAGMAPOBJECT(See source)
	Removed some of the console spam used for testing purposes

1/30/2005 - EviLDeD (Contrib: Rynet)
	Corrected a display problem with boats. This has been commented out due to being a work around for teh SetZ/SetDispZ bug which has been fixed I believe
	Corrected some copy/referance issues in cSocket

1/28/2005 - EviLDeD
	Removed CTriggerScript class as it was redundant. Moved functionality into CTrigger class
	Improved the command load process by having CommandRegistration() send in the contextID responsible for command RegisterCommand()
	Increased amount of console spam looking for the full JS reload IE: console '8' that will crash the server on the next world save
	NOTE: Currently the console '6' Reload commands appears to operate correctly with no crash upon save. At this point it is recomended that any object/item/char script changes that are NOT magic or command related be done while the server is shut down until a solution can be found for this.
	NOTE: When solutio is found all console spam and comments will be removed internally.

1/16/2005 - EviLDeD
	Increased the JS global context stack size to 32kb from 8kb just to be safer
	Added cCommand::UnRegister(string,cScript*) function to facilitate removal of named command objects. Currently not in use.
	Added some console spam to help diagnose the AddMenu/PolyMorph gump issues not displaying correctly
	Fixed(Partially) the JS Command reloading. Now commands are correctly loaded, however side effect is that the server will
	 crash at save time. Once this last issue is sorted out then this bug will be fixed.

January 15 2005 - Maarc
	Removed saving/loading of ObjectType property - reduces load time by 40 seconds (420 down from 460) on a 70k item / 2k char world converted from old system
	Explicitly setting some pointers NULL after they have been destroyed
	Removed call to StoreRandomItemValue() in CMultiObj::LoadRemnants() - not really necessary, and the function call needs to be after world load, not during (ie candidate for PostLoad, if any)

1/12/2005 - giwo
	Moved Alchemy functionality out to JS.
	Moved the following use functionality out to JS.
		Scissors
		Potions
		Moongates
		Spun Fabric
		Unspun Fabric
		Cotton Plant
	Removed unused XGM code from the source.

1/9/2005 - giwo
	Moved the following Skill Functions to JS.
		RepairBow
		RepairLeather
		Tinkering
		Tailoring
		Fletching
		Carpentry
	Moved Food consumption functionality out to JS
	Moved teleport rune functionality out to JS.
	JS Changes
		Changed CChar_MakeMenu to CMisc_MakeMenu to allow access to sockets.
		Modified CMisc_MakeMenu to allow passing the skill number.
		Removed old style MakeMenu() function.
		Added CChar_FindItemType( itemType ) to allow searching for items by type.

1/8/2005 - giwo
	Fixed some minor issues with the new jse_typeassociations.scp handling.
	Included skills/healing.js in a first step toward putting skills in JS.
	Removed Skills::HealingSkillTarget

1/7/2005 - giwo
	Made some adjustments to the Client update range.
	Converted many functions to use references rather than pointers.
	Fixed Mark, Recall, and Gate Spells and Commands to handle different worlds.
	Added js/jse_typeassociations.scp
	Added CEnvoke to handle all envoke functions.
	Added CTriggerScripts to simplify script handling in CTrigger class.
	Renamed the class Triggers to CTrigger to conform to proper class naming standards.

1/2/2005 - EviLDeD
	Fixed the issue of client crash on the 3D client when access the 'add menu

1/1/2005 - giwo
	Fixed an issue causing corpses to not display to their "owner".
	Changed how we play the Death Animation to stop corpses from "moving".
	Altered corpses update to send a few less unneeded QueryToolTip packets.

12/31/2004 - giwo
	More cleanups in CPacketSend.cpp
	Renamed doDeathStuff() to HandleDeath() and moved it into pcmanage.cpp.
	Cleaned up the code a bit in HandleDeath() and its sub-functions.
	Fixed an issue causing starting skin color to disregard the players selection.
	Brought down the range at which items in containers were sent to other players.
	Added a GM check before updating a buy, sell, or bought layer to a character.
	Fixed an issue causing GOLD tag on NPC's not to be read in properly.
	JS Fixes
		Fixed an issue causing 'deletechar not to function (thanks Xuri).
		Fixed an issue causing 'wholist off not to function properly.

12/31/2004 - EviLDeD
	Updated the version to 0.98-2.5b
	Added, and fixed all the doors. Now they all should work properly including the new expansion
	Added all door ID's to harditems.dfn to ensure that all doors get type=12 including the new doors.

12/30/2004 - EviLDeD
	Updated the version to 0.98-2.5a this includes the changes that Giwo has commited. Remember to increment the version please.
	Fixed a small bug with accounts allowing more than one client to log in under a single account and manipulate the character.
	Fixed some logistics with the new doors, they all should work now, as long as they are set to type 12.

12/30/2004 - Xuri
	Added support for the new Samurai Empire weapons, and added three new WeaponTypes, DUAL_SWORD, DUAL_FENCING_STAB and
	 DUAL_FENCING_SLASH, to get more fitting combat animations for some of those weapons.

12/29/2004 - giwo
	Removed CChar::dispz as it served no purpose.
	Fixed an issue causing the Buy Window to not display prices and display items only after scrolling.
	Fixed an issue causing the server to send extra unnecesarry QueryToolTip packets.
	Fixed packet issues causing Dir and Z not to function properly on Items.
	Fixed a packet issue causing combat targets not to remaing highlighted.
	Fixed a crash on login casued by FindPlayersInVisrange().
	Minor cleanups in CPacketSend.cpp

12/27/2004 - evilded
	Added code for until now unsupported doors, including new SE doors (experimental!).
	Uncommented PORT functionality in source. This is the port in which UOX3 will listen on, it is wrong to assume that the port
	 listed on the first server list line in the ini file is correct. In almost ALL cases they would be the same however what if
	 they are not, and there are multiple servers listed that do not share the same listening port 2593.

11/24/2004 - giwo
	Removed unnecesarry Constructors/Destructors and did some minor updates.

11/21/2004 - giwo
	Fixed an issue causing the first item in a list not to be deleted when the list was cleared.

8/22/2004 - giwo
	Began enforcing stricter class naming rules in an effort to standardize the code (IE CSocket not cSocket).
	Removed some unneeded global variables.
	Rewrote ShowSkillTarget().
	Sized down CTownRegion::midilist to a UI16.
	Sized down some variables in the CSpawnRegion class.
	Fixed an issue causing all characters to be created with at least 1.0 base skill level.
	Minor cleanups.
	Moved 'wipe' and 'iwipe' out to JS.
	JS Changes:
		Fixed an issue with CChar_SetSkillByName().
		Added Character prop .tamed.

8/20/2004 - giwo
	More use of const_iterators where applicable.
	Changed some vector.size() comparisons to vector.empty().
	Minor fixes with a couple packets.
	Moved 'areacommand' out to JS.

8/13/2004 - giwo
	Converted a few areas of code to using refrences rather than pointers.
	Consolidated some code in cWeather.cpp and cRaces.cpp.
	Fixed a couple areas where an ACCOUNTSBLOCK was being copied and altered, but not set back on the object it was copied from.
	Implemented a temporary fix for multiple users on one account and other related issues.
	Modified CChar::petsControlled to make use of CDataList.
	Made use of const_iterators in place of iterators in many places.
	Modified a few more instances of CDataList to be handled by an accessor that would return a pointer.
	Removed MOREB (MORE2) from CItem.
	Modified Monster Gates (polymorph gates) to make use of items description tag in order to use string-type script entries.
	Minor fixes and updates.
	JS Changes:
		commands/targeting/set.js:  Fixed an issue causing 'set owner to not function properly.

8/6/2004 - giwo
	Fixed an issue causing extra invalid servers to appear in the server list.
	Added CPSellList to handle sending the vendor "sell" gump.
	Fixed weight adding twice every time a player picked an item up.
	Merged in some linux warning fixes.
	Removed some superfluous includes.
	Moved 'where' command out to JS.

8/4/2004 - giwo
	Fixed some Level 4 Warnings.
	JS Changes:
		CChar_Gate now supports passing a locations.dfn entry number (IE mChar.Gate( 1 ); ).
		CBase_Teleport now supports passing a locations.dfn entry number (IE mchar.SetLocation( 1 ); ).
		Added CSocket_SendAddMenu( menuNum ).
	Command Updates:
		Moved 'addx' out to JS.
		Moved 'add' out to JS.
		Moved 'xgo' out to JS.
		Combined 'xgoplace' with 'xgo'.
		Moved 'xgate' out to JS.
		Moved 'go' out to JS.
		Moved 'itemmenu' out to JS.

8/3/2004 - giwo
	JS Changes:
		Modified SoundEffect() as it was playing a sound one less than specified.
		Updated CChar_SetSkillByName() to return true if it successfully set, false otherwise.
		Updated many of the JS commands to fix some minor issues and improve output.
		Added GetSocketFromIndex()
	Command Updates:
		Moved 'fix' out to JS.
		Moved 'tele' out to JS.
		Moved 'xteleport' out to JS.

8/1/2004 - giwo
	Changed some variable sizes in order to reduce type mismatches and memory waste.
	Created a new class, CDataList, this is basically a safe wrapper for deque, where one can specify what they are storing.
	This allows us to consolidate quite a bit of code from several different classes by simply making our lists CDataList< objtype * >
	rather than using DCHARLIST or DITEMLIST, etc.

	Old style listings:
	------------------
private:
	DCHARLIST chars;
	DITEMLIST items;
	DCHARLIST_ITERATOR charsIter;
	DITEMLIST_ITERATOR itemsIter;
public:
	FirstChar();
	NextChar();
	FinishedChars();
	NumChars();

	FirstItem();
	NextItem();
	FinishedItems();
	NumItems();

	AddChar();
	RemoveChar();

	AddItem();
	RemoveItem();
	------------------

	New Style:
	------------------
public:
	CDataList< CChar * >	chars;
	CDataList< CItem * >	items;
	------------------

	Everything else is handled internally (and thus any bugs that arise can be fixed in one place, not half a dozen).

	JS Changes:
		New character prop: magicReflect, sets and returns if they have magic reflect on
		New character methods:
			SpellMoveEffect( target, spell )
			SpellStaticEffect( spell )
			BreakConcentration( [socket] )
		Wrote clumsy.js, the first UOX3 spell to be put in JS. This script is mostly working, but there are
		some issues that need to be worked out before the entire spell system is put out to the JS engine.

		Currently known issues:
			No way to cause one target to attack another in JS.
			No Line of Sight checks in JS.

August 2 2004
	Changed __unix__ references to UOX_PLATFORM != PLATFORM_WIN32

July 31 2004
	Increased JS context stack size from 0x2000 to 0x4000 (we may need the extra space)
	Updated JSEncapsulate for delayed initialisation (useful for optional parameters to methods)
	Implemented Console object in JS
		Methods
			Print			1 (text to print, include \n at the end unless you're sending multiple mesesages)
			Log			1 (text to print, same as above.  Optional second parameter is the name of the file to log it into)
			Error			2 (error level, text to print)
			Warning			2 (warning level, text to print)
			PrintSectionBegin	0
			TurnYellow		0
			TurnRed			0
			TurnGreen		0
			TurnBlue		0
			TurnNormal		0
			TurnBrightWhite		0
			PrintDone		0
			PrintFailed		0
			PrintPassed		0
			ClearScreen		0
			PrintBasedOnVal		1 (pass true or false, it will say pass/fail based on this)
			MoveTo			2 (x coord, y coord - if you want the same line, y == -1)
			PrintSpecial		2 (colour of text, text to print)
		Properties	(most of these can be ignored, as they do very little eg boundaries)
			left			left (always 0)
			top			top (always 0)
			height			height (always 0)
			width			width (always 0)
			filter			filter setting
			mode			filter mode
			level			filter level, integer
			logEcho			boolean - determines if log calls get echo'd to screen

	Wrote a console test driver script (command consoletest)
	Posix compliance fix from xir
	Added MSVC7.1 project files

July 29 2004
	Note: We need to change references to __unix__ to something more like UOX_PLATFORM != PLATFORM_WINDOWS or UOX_PLATFORM == PLATFORM_LINUX
	Some of che's fixes were not fixes (ie commenting out the throws) or improperly done (platform specific decls don't go in uox3.h)

7/28/2004 - giwo
	Minor fixes, cleanups
	Included che's linux fixes

July 28 2004 - Maarc
	Possible crash in _add avoided
	GetAmount() returns a UI16 and we were comparing to 0xFFFF, no longer needed
	Three possible crashes in ShowCName stepped around
	Called GetWord rather than GetDWord for magic targeting
	Possible crash in addRandomColor avoided (only if colorlist didn't exist)
	Possible crash in LoadFromScript (townregions) avoided
	Fixed an issue that VC7.1 finds.  We clear() a list, and then reference the first item, in processing the INI, which crashes
	Modified some changes from che
	Fixed some typo declarations
	Moved stdexcept into UOXStdHeaders, so that exceptions can be used wherever needed
	for loop problem declaration (using var outside loop)


7/25/2004 - giwo
	Removed several vtables from classes that were not subclassed
	Added struct GoPlace_st and CWorldMain::goPlaces map to replace re-reading entries every time we use GoPlace.
	Removed MakePlace()
	Removed cSocket::AddX & AddY and renamed AddZ to ClickZ
	Fixed an issue causing invalid entries to exist in the ObjectFactory (causing a crash on WIPE ALL)
	Once again merged deletionIQueue and deletionCQueue back together as a QUEUEMAP (as ObjectFactory fixed the original problem).
	Combined CBO::Visible(), CChar::Hidden(), and CChar::PermHidden() into a single CBO::Visible() using enum VisibleTypes
		0 = Visible
		1 = Temporary Hidden (Skill, Item visible to owner)
		2 = Invisible (Magic Invis)
		3 = Permanent Hidden (GM Hide)
	Moved all of the remaining targeting functions out of cTargets and removed the class along with targeting.h
	Converted CWM::creatures[] into a map and creat_st into class CCreatures.
	Converted TeleLocationEntry into class CTeleLocationEntry.
	Fixed an issue with UString::number() causing it to only return decimal values.
	JS Updates:
		Changed SetSecondsPerUOMinute() to SecondsPerUOMinute() used to Set and Return the value.
		Converted ReadBytes( socket, offset ) to CSocket_ReadBytes( offset )
		Converted Get DWord/String( socket, offset ) to CSocket_Get DWord/String( offset )
		Converted Set Byte/Word/DWord/String( socket, offset, newVal ) to CSocket_Set Byte/Word/DWord/String( offset, newVal )
		Renamed CChar_WanderBox() to Wander() and allowed it to handle a circle (3 values) or box (4 vals).
		Modified Get/Set Timer() to work for both Sockets and Characers (Perhaps need this for Items as well).
		Added CItem_Dupe() to allow duping of items in JS.
		Added CChar_Jail( numSecs ) and CChar_Release() to Jail and Release characters
		Added IterateOver( objectType ) and onIterate( object ) to allow looping through world objects.
		Added CChar_Kill() method to kill a character.
		Added SendStaticStats() to build an info gump for statics and map tiles.
		Added Gump.AddPageButton() to allow Next/Last page buttons.
		Added NumToHexString() to allow converting a number to a hex string.
		Added SetSkillByName() method to CChar to simplify setting skill by name.

		Added a map to map strings to objectTypes;
		Currently this is used in CreateBlankItem(), CreateDFNItem() and IterateOver()
			"BASEOBJ" 	= OT_CBO
			"CHARACTER" 	= OT_CHAR
			"ITEM" 		= OT_ITEM
			"SPAWNER" 	= OT_SPAWNER
			"MULTI 		= OT_MULTI
			"BOAT" 		= OT_BOAT

		Properties:
			Characters:
			Added isJailed prop to check if a character is in jail
			Added squelch prop to toggle Characters squelched status.
			Added spattack prop to set NPC's Spell Attack value.
			Added spdelay prop to set NPC's Spell Delay value.
			Added aitype prop to set NPC's AI Type.
			Added split prop to set amount of NPC's to split into on hit.
			Added splitchance prop to set NPC's chance of splitting on hit.
			Added trainer prop to toggle NPC's ability to train skills.
			Items:
			Added corpse prop to toggle whether or not an item is a corpse.
			Added strength prop to set items str-to-wear value.
			Added wipable prop to toggle items ability to be wiped.
			Added buyvalue and sellvalue props to set items value.
			Added restock prop to set amount of items to restock in a shop.
			Added devinelock prop to set items Devinely Locked property.
			Spawners:
			Added spawnsection prop to set script section for spawner to pull from.
			Added sectionalist prop to toggle whether or not the above section is a list.
			Added mininterval and maxinterval to set how many of an item to respawn per call.
			Misc:
			Renamed CSocket_addz to CSocket_clickZ
			Added weight prop to Characters and Items to get and set the weight value.
			Added isSpawner prop to Characters and Items to identify a SpawnItem.
			Added allskills prop to Skills class to set all skills at once.
	Command Updates:
		Moved RESURRECT out to JS.
		Moved NACCT out to JS.
		Moved GUMPMENU out to JS.
		Moved JAIL and RELEASE out to JS.
		Moved HIDE and UNHIDE out to JS.
		Moved SECONDSPERUOMINUTE out to JS.
		Moved NPCBOUND to JS and Split it into NPCRECT & NPCCIRCLE.
		Moved SQUELCH and MUTE out to JS.
		Moved DUPE out to JS.
		Moved SHOWDETAIL out to JS.
		Moved KILLALL out to JS.
		Moved DELID out to JS.
		Moved CLEANUP out to JS.
		Moved ZEROKILLS out to JS.
		Moved TELESTUFF out to JS.
		Moved KICK out to JS.
		Moved DELETECHAR out to JS.
		Moved KILL out to JS.
		Moved ISTATS out to JS.
		Moved CSTATS out to JS.
		Moved SET out to JS.
		Moved INCX, INCY, and INCZ out to JS.
		Removed WF

7/22/2004 - giwo
	Added JS access to sockets xtext (string) property.

7/20/2004 - giwo
	Fixed an issue causing a crash on shutting down the server.
	Modified UOX to disallow loading one script whilst another is loading.
	Fixed an issue causing newer clients to lockup when using a boat.
	Fixed an issue causing PostLoadProcessing() to never be called for Multis.

7/18/2004 - giwo
	Fixed an issue causing items and characters not to be properly removed from sight.
	Fixed a minor problem causing statwindows to not update properly.
	Fixed an issue causing item and characters to not be distinguished properly when doing a calcFromSer().
	Fixed an issue causing client to lag permanently shortly after logging in.
	Fixed an issue causing UOX to bail out when setting the container of an item in JS.
	Consolidated some code in cSocket.cpp
	Began moving commands out to js:
		ACTION
		ALLMOVE
		BOLT
		BRIGHTLIGHT
		BUY
		CY		(Now cnsyell)
		DARKLIGHT
		DUNGEONLIGHT
		FULLSTATS
		GATE
		GLOW
		GMOPEN		(Now openlayer)
		GY		(Now gmyell)
		SGY		(Now adminyell)
		SHOWTIME
		HEAL
		HOUSEICONS
		MANA
		MARK
		MIDI
		MOVETOBAG
		NPCTARGET	(Now follow)
		READINI		(Now reloadini)
		RECALL
		RELOADACCOUNTS
		RELOADDEFS
		REMOVE
		REMOVESHOP
		RESEND
		SELL
		SETPOISONED
		SETRACE
		SFX
		SKIN
		STAMINA
		UNGLOW
		WHOLIST
		XBANK		(Now openbank)
	Added the following functions to the JS engine:
		Yell( socket, toYell, commandLevel )
		GetDictionaryEntry( entryNum, [language] )
		RaceGate( socket, character, raceNum )
		WorldDarkLevel() to set and return cSD:WorldLightDarkLevel().
		WorldDungeonLevel() to set and return cSD:DungeonLightLevel()
	Added the following character props & methods:
		(bool) allmove
		(bool) houseicons
		OpenLayer()
	Added the following item methods:
		UnGlow()
		PlaceInPack()
	Added the following cSocket props & methods
		(object) tempObj
		WhoList()
	Modified:
		Reload(), Now accepts case 9, reload accounts.
		GetWorldBrightLevel() renamed to WorldBrightLevel(), now sets and returns cSD::WorldLightBrightLevel()

14 July 2004 - Maarc
============
	Integrated Xuri's dir property for JS items
	Bug fix on command_darklight (Xuri)
	Altered the ACCOUNTSBLOCK code so that it uses proper constructor rather than assignment (double assignment, essentially)
	Removed some unused properties of accounts (bPackPacket)


7/12/2004 - giwo
	Added 'FIXSPAWN command to update all item spawners in the world to work with CSpawnItem.
	Minor changes.

7/11/2004 - giwo
	Fully implemented CSpawnItem, removing remnants of old spawners.
	(Note this will break any current spawn items you have in your world, sorry for the inconvenience).
	Broke cBaseObject::Dupe() into two functions, Dupe() and CopyData() to allow carrying over cBO settings
		to the Duped item and make way for future sub-classes of CItem and CChar.
	Modified townregions to now store an npclist to pull guards from and the total amount of guards to spawn.
	Updated the CommandList docs with the latest changes to the command list.
	Minor consolidations and modifications to the scripts.
		Removed /tracking/ and /polymorph/ moving their scripts into /menus/.
		Removed /digging/ and /fishing/ moving their scripts into /items/itemlists/.
		Fixed up /items/gmmenu/spawners.dfn to function with CSpawnItem changes.
		Modified regions.dfn to match up with changes to TownRegions.
		Fixed an issue causing advance.dfn to not read in properly.
	Fixed an issue causing nested itemlists and npcslists to not function properly.
	Added a few more dictionary entries.

09 July 2004 - Maarc
============
	Completely switched over to ObjectFactory code, getting rid of the other stuff - think its best for debugging
	Fixed a bug with 'make gm, we were trying to sprintf a std::string
	Removed periodic trigger code, as it never has a chance to load or activate, and needs a rethink (more like commands or spells?)

08 July 2004 - Maarc
============
	Changed the saving of Damage property, we read it in as lo,hi and write it as hi,lo - now consistent
	Found the non-disappearing horse bug on mounting.... Teleport() does a RemoveFromSight, but by THAT time, we've already... gone :)
		2 possible fixes
			1) Store the old location so it can be used on RemoveFromSight
			2) Tell *everyone* about it
		For the moment, I have elected the former until we can decide on a better strategy, as the implementation does get a bit hairy
	Implementation was missing for Delete() for CItem and CChar under ObjectFactory mode - by implementing this, wipe works again, amongst other things.

7/7/2004 - giwo
	Consolidated all the more's in CItem into a single tempVars[] array.
	Once again implemented deques in SubRegions and fixed some issues with list corruption.
	Implemented deques in CItem to avoid corruption in Containers
	Added CObjectHandler class to replace need for hash tables to map serials to indexes.
	Fixed some possible issues with cSpawnRegions.
	Fixed an issue causing some crashes involving speech.
	Further implementation of CSpawnItem.
	Fixed many areas where a hex value did not have the 0x infront of it.
	Modified CreateDFNItem() and CreateBlankItem(), now accepts specification of the objecttype (defaults to normal item).
	Modified a few of the targeting functions to make way for adding spawner items.

07 July 2004 - Maarc
============
	JS related fixes
		"scrollLow" property of Spell objects was set as an index... it's not that, it's an individual value
		skillsused is now like baseskills and skills for characters (previously unaccessible)
		Removed GetGuildMaster function as it referred to old chars[] array
		Converted CalcTargetedChar function to be similar to CalcTargetedItem so it returns a real object
		onCallback%i will now set targeted to a NULL object if the object clicked on is not valid, or not an object (eg a tile)

	Added the following properties to the JS Character object

		townpriv
		guildtitle
		fonttype
		saycolor
		emotecolor
		attacker
		racegate
		skillLock
		deaths
		nextAct
		petCount		read only
		ownedItemsCount		read only
		cell

	Added the following methods to the JS Character Object

		GetTimer( timerID );
		SetTimer( timerID, numMilliseconds );

	Valid values for timerID are:

		0	//	tCHAR_TIMEOUT
		1	//	tCHAR_INVIS
		2	//	tCHAR_HUNGER
		3	//	tCHAR_POISONTIME
		4	//	tCHAR_POISONTEXT
		5	//	tCHAR_POISONWEAROFF
		6	//	tCHAR_SPELLTIME
		7	//	tCHAR_ANTISPAM
		8	//	tCHAR_CRIMFLAG
		9	//	tCHAR_MURDERRATE

			// NPC Timers
		10	//	tNPC_MOVETIME
		11	//	tNPC_SPATIMER
		12	//	tNPC_SUMMONTIME

			// PC Timers
		13	//	tPC_LOGOUT

	Updated CItem::SetCont so that it doesn't try and do things it shouldn't during world load
	NOTE: We have an issue... we can't validly set all the weight stuff until the world's loaded
	OKAY, the base default world now loads with the new object factory, and it's all fun and games.

06 July 2004 - Maarc
============
	JS related fixes
		Reenabled the ability to set poison and magic resistance on a race object
		All setProperty routines now use JSEncapsulated, should be *much* more tolerant now
		Any attempt to do something like mSock.currentChar = pUser; would fail, replacing pUser with the actual current char.  It should now behave properly
		It is now possible to set a socket's tempInt property

05 July 2004 - Maarc
============
	Fixed a problem where it would crash on reloading JS scripts (via magic and commands)
	Removed commented out code that was never used (including tempeffectsoff and tempeffectson)
	Added some methods to help with deletion issues in the temp effects queues
	These fixed an issue where creating a timer on a just elapsed timer would cause a crash
	CCP_TARGET can now be set - char.target = npc;
	More support for floats in the use of properties for characters - dex (x2), int (x2), str (x2), mana, stamina, health
	Note that it will throw an exception if you do not pass a parameter of the right type
	We need a longer term solution to this particular problem.  One idea - create a class JSEncapsulate that takes the JSVal and context, and stores the data internally, with methods that allow it to be casted back to a "proper" value
	As certainly we will need this for more than just the character class

04 July 2004 - Maarc
============
	nspawnsp and ncspawnsp rolled into CItem class.  Only items can be spawners (not NPCs), and all references to those objects now are done within the CItem class, or through FirstSpawn/NextSpawn/FinishedSpawn
	Updated documents to not use CHARACTER or ITEM unless where it is actually used, to aid in finding where CHARACTER and ITEM references are that need to be ported to CChar * / CItem *
	Updated ObjectFactory with a CountOfObjects method, which allows us to discretely count (if we wish) the number of objects for each type we have
	I believe we've just about covered everything in ObjectFactory that is required to encapsulate chars[] and items[]
	Removed an unused method in WhoList (GrabSerial)
	From what I can see, all references to CHARACTER and ITEM are now done by deletion queues or the char/item handlers
	Added Singleton.h from OGRE, and adapted ObjectFactory to be one.  We can create and delete this in a local context, and use ObjectFactory::getSingleton() everywhere else we might need it.
	Spelling fixes
	Begun the integration of  the ObjectFactory which is #ifdef'd at the moment.  The ObjectFactory integration does NOT compile, and error messages are left in place for what needs to be done.
	Some of the stuff we need to be able to do with the ObjectFactory is essentially, a for every char/item in the world... so what we need to do is support FUNCTORS, I think that would be the most useful
	The question becomes... what sort of functors?  something of the variety of:

	bool MyFunction( cBaseObject *working, UI32 &counter, void *extraData );

	As this will solve almost everything we want to do (reset kills, remove keys and so on), and allow us to bail out early if needed (via the bool, return true if continue, false if not)

	A few functions are implemented thusly (including world load postloadprocessing)

03 July 2004 - Maarc
============
	Fixed an accidental bug where it would constantly process legacy accounts
	More use of upper() caching
	Added Config.h, Platform.h, Prerequisites.h and UOXStdHeaders.h
	Thrown *everything* into the UOX namespace
	Predeclared most of your classes (not packets, and not a few other minor ones) in Prerequisites.h
	Begun an implementation of an object factory for creation, destruction and recycling of objects.  This is not hooked into the main code pipeline, because some of it still relies on ITEM or CHARACTER types, which we want to eliminate (no more global chars or items!)

	Removed some SE functions (not JS object functions) that relied on chars[]/items[] and hence would fail miserably

		GetLightLevel
		SetPrivateBitRange
		GetPrivateBitRange
		SetPrivateWord
		GetPrivateWord
		SetPrivateBit
		GetPrivateBit
		SetSkillUse
		SkillBeingUsed
		GetGuild
		CompareGuild
		RemoveFromGuild
		AddToGuild
		AttackTarget
		Attack
		IsMemberOfTown
		CalcRank
		UseReagants
		UseReagant
		FindItemOnLayer
		RaceCompare
		GetCharPack
		SetSerial

		SetDecayTime
		GetDecayTime

	chars[] and items[] are now really only referenced in a few small places (less than 10 by array on both, less than 50 by member funcs eg calling Count)

	================
	Discussion Ideas
	================

	OgreConfig	- Compile time configuration options
	OgrePlatform	- Platform / compiler compatibility file - includes OgreConfig
	OgrePrequesites	- Includes OgrePlatform.  Disables any compiler warnings, stl compliance (eg HashMap) and some typedefs (eg uchar).  Also includes OgreStdHeaders and forward declares any classes needed.

	Should lift off the Singleton class, as it would help with some of our data and initialisation

	Useful classes as Singleton (some possibly lifted from OGRE)

		LogManager

	Other potential useful classes

		template <> FactoryObj
		ResourceManager


	Other possibilities

		Asynchronous network!  Esp under windows, where it can callback at any time - inject events into a queue for the PC
		Consider using a multimap or hash_multimap for storing our object types... given that hash_multimap is like standard, multimap may be a better bet
		However, there are differences: multimaps are sorted, ergo inserts/deletes are logarithmic - hash_maps are not, only hashed, so constant time.  In theory, hash will be better, but given we do little in the way of insert/deletes, multimap would be agood start

7/2/2004 - giwo
	Made use of OnDrop() JS function.
	Cleaned up some areas where we were calling UString::upper() far too many times for a single string.
	Removed unneeded cBO::Load overloads in CItem, CChar, CMultiObj and others.
	Initial implementation of CSpawnItem in order to break CItem up into smaller classes.

02 July 2004 - Maarc
============

	Fixed display issue with saving packet logs (hex values a->f weren't displayed right)
	Fixed an issue with the add menu that was relying on gumps that didn't exist in older clients
	Fixed CTEffect constructor so it inits the assocScript
	Fixed an issue with StartTimer - it would never call back into another script properly
	Fixed an issue with the action property of spells in JS - it was wrongly declared as an index, not a static param!
	Added ClientCanReceive to CPNewSpellbook so it can fallback on pre-4.x clients to the old method
	Added CCP_SPELLCAST/"spellCast" property to JS Character objects
	Added CCP_ISCASTING/"isCasting" property to JS Character objects
	Added SetJSCasting/IsJSCasting to CChar but this is a *temporary* measure only.  When all spells are outsourced to the JS scripts, it can be removed, so that other code doesn't misbehave (ie the code currently will call CastSpell if you're in casting mode and the timer has elapsed... which won't happen under JS!)

	onSpellCast for JS spells has been changed to:

	onSpellCast( socket, character, directCast, spellNum );

	This allows for multiple spells registered in a single file (eg think all the summon ones, for instance)
	StartTimer now looks like
		BaseObject.StartTime( numMillis, TimerID[, optVal] );

	optVal can either be a boolean (call back into this script, so we don't have to know it's number... this solves non-item/npc scripts so magic can work right) or an integer (the script number to call back into)
	A very basic workflow script exists for clumsy - it does not take everything into account, nor does it actually do the clumsy part, it's just an example.

01 July 2004 - Maarc
============
	Fixed a bug with newaccounts.adm and parsing
	Converted ImportAccounts to use std::string and UStrings
	Removed the ability to pass "+add:user,pass,email" and "+import:filename.import" arguments to the binary.  This *cannot* be done at this stage, as the accounts haven't been initialised and loaded, so conflict resolution cannot occur.
	Removed typedef of CLPSTR as no variables use it
	Removed some strlwr's in favour of using a UString with lower()
	Substring search now uses UStrings rather than allocating and deallocating char * arrays
	Added character6 to the account property object for JS
	Added a #define CHARACTERCOUNT to cAccountClass to help centralise any changes
	Removed old jsMagicTable_st data
	Added spell equivalents to the JS command registration

		RegisterSpell( spellNumber, isEnabled );
		DisableSpell( spellNumber );
		EnableSpell( spellNumber );

	Spell JS files can be registered by adding entries like this:

	FILE=path/file.js

	into [MAGIC_SCRIPTS]

	Note that it automatically prepends the path to the JS scripts before it, so you only need to put in a relative path (ie same as command scripts)

	onSpellCast( socket, character, directCast );

	socket is the character's socket (not guaranteed to exist, only if PC is casting)
	character is the character casting
	directCast is a boolean
			true if
				an NPC
			false if
				a PC selecting from a spellbook, wand or scroll
				a PC who has casted from a JS script depending on param (ie char.CastSpell( spellNum, true/false ) (if true))

	// It is the responsibility of the JS script to call the proper events (ie onSpellSuccess and so forth)
	// They deal with their own mana subtraction and all sorts of things
	// They also deal with valid regions and what not.  s is *not* guaranteed to be valid (ie it could be an NPC)
	// Suggested script workflow:
	//	* Check if already casting, if so, stop and dump out
	//	* Check if frozen, if so, can't cast spell
	//	* Check if enabled
	//	* Check if scroll, wand or normal cast (scroll reduce requirements, wand do straight away)
	//	* Check requirements (min int, dex, str)
	//	* Check for reagants
	//	* Check if can cast in this area
	//	* Determine if the cast "succeeded"
	//	* If so, fire onSpellSuccess, otherwise fire onSpellFailure.  If failed, speak and return
	//	* Set the player as "casting" and freeze
	//	* Create timer for when the spell will be complete
	//	* Wait for timer to elapse
	//	* Upon timer elapsing,
	//	*	Unfreeze player
	//	*	Send target identifier if any (based on timer) and wait for callback
	//	*	If not target, do action (if any)
	//	*	If target, create onCallback function
	//	*	On callback, do stuff
	//	* NOTE * For area affect spells, use an AreaCharacterFunction

	Note to self - Want to update TriggerEvent so that you don't just pass a script number (though it's possible) but also a variant where you pass a character/socket/item, so that it can use the script associated with that

	The spell JS file also has to include a SpellRegistration command

	function SpellRegistration()
	{
		RegisterSpell( 1, true );	// say, clumsy, same as in the spells.dfn file
	}

	As it stands, only 1 spell per file, unlike the JS commands, which I should probably fix up by adding a spell ID to onSpellCast and passing it all in (would make life much easier for area effect versions of single spells)

6/27/2004 - giwo
	Broke packets.cpp/.h into CPacketSend.cpp/.h and CPacketReceive.cpp/.h
	Implemented some debug code to hopefully clear up some crash issues with region loops.
	Modified the deltionQueue in order to ensure proper deletion of objects.
	Fixed an issue causing characters to never switch targets in combat until their target died.
	Fixed a minor issue with Packet Logging.
	Fixed an issue causing a crash on creation of a new character.
	Fixed issue causing many regions to not be recognized.
	Added display of characters region to 'cstats command.
	Implemented support for new Popup ToolTip displays.
	Implemented support for new Spellbook packets via CPNewSpellBook packet class.
	Implemented support for OSI displaying damage above victims head via CPDisplayDamage packet class.

6/25/2004 - giwo
	Fixed a small bug causing things to crash intermitently and appearingly random(Thanks Abaddon!)
		There was ONE sName[32] still left in the code, and he found it! This is only an upate
		pactch.

6/19/2004 - giwo
	Fixed several issues with boats, should function normally again.
	Fixed an issue causing "bad multi setting" error message.
	Fixed create menus coming up as blank gumps (note they seem to have other issues though).
	Removed deques from SubRegions, as they seemed to be causing some crashes.
	Upped the limit on a characters Name and Name2 attribute to 50 characters.
	Fixed items with a SpawnObjList setting in the DFN's, should now properly spawn NPC's.
	Fixed 'wipe and 'iwipe commands, should now properly wipe all items in(or out of) selection.

6/13/2004 - giwo
	Fixed an issue causing characters without fame/karma titles to display as "The  Name".
	Fixed an issue where characters with Grandmaster status would not have a prowess title.
	Fixed a flagging problem causing offline characters not to appear "greyed" out.

6/12/2004 - giwo
	Corrected some small logic errors with the new account slot. Should work well now.
	Modified command handling so strings of text would not be converted to all caps.
	Added missing "Name" entry into 'set (IE 'set name blah).
	Fixed an issue causing JS gumps not to respond when a button was pressed.
	Fixed an issue causing 'set movable # not to work.
	Updated allmove and houseicons commands to automatically update the client.

6/11/2004 - giwo
	Fixed a small bug with the offline html output overwriting the online file.
	Added server side support for 6 character slots. (Currently disabled still)
	Adder server side support to allow player to select paladin, or necromancer at char creation
	More support for cBoatObj made it into this commit to the cvs as well.

6/7/2004 - giwo
	Made use of deques in place of vectors in SubRegions to allow faster memory recovery.
	Fixed an issue where an object in a multi was not being removed from the multi container.
	Modified CreateItem() routines so items created directly by ID are not decayable by default.
	Fixed 'add <hex-id> to pull directly from .mul files, not the scripts.

6/06/2004 - giwo
	Many changes have been made. Specifically dealing with structure, and  STL conformity. Other changes include dynamic gm menu item
	fetching, a very large bug preventing valid world files from being saved to disk correctly or at all.
	Added a new GM Menu gump design with new functionality. Documentation to come, but you can now tag items directly from the DFN blocks and assign them to a itemmenu group dynamically at runtime.
	fixed some spacing and other whitespace related issues.

6/5/2004 - giwo
	Fixed a crash caused by placing a house.
	Fixed certain entries in the Help gump not functioning.
	Fixed a crash caused by invalid objects in the tempeffects queue.
	Fixed a crash caused by 'dupeing items on the ground
	Changed 'add tile <hex-id> to 'add <hex-id>
	Documented Weight.cpp
	Documented ai.cpp

12/30/2003 - giwo
	Rewrote much of the combat code, renamed cCombat to CHandleCombat.
	Fixed a problem causing characters accounts not to be properly set.
	Fixed an issue causing monsters to not play any sounds.
		Changed NPCLIST and ITEMLIST behavior to allow nesting lists (for instance, if you want all
	orcs on another list, add npclist=allorc rather than manually adding each NPC entry).
	Updated spawnregion NPCLIST and ITEMLIST loading to handle the above changes.
	Many optimizations done to checkauto(), checkNPC(), checkPC, and genericCHeck().
	Moved checkauto() to CWorldMain class and renamed it CheckAutoTimers().
	Fixed Polymorph spell and tracking skill, unifying the code a bit for easier maintenance.
	Moved Polymorph Duration out of polymorph.dfn and into uox.ini to remove needless re-loading.
	Broke CheckAI() out into several smaller functions simplifying things a bit.
	Tweaked checkItem() cleaning up RespawnItem() and DecayItem() and optimizing things a bit.
	Fixed display of clothing on corpses.
	Made more use of RefreshQueue, now is used for updateStats, Thus SetStrength/SetHP and other Stat-modifying mutators use Dirty().
	Updated Dirty() to allow passing of a var (matched to an enum) that is then used to determine the type of refresh.
	Created virtual functions of many pre-existent functions in CChar to allow setting of Dirty() var for updateStats().
	Changed most object pointers in CChar to serials, this is less speedy, but safer (we were getting item objects passed back as character objects, etc).
	Fixed many scenarios causing crashes due to a bad socket pointer in tempeffects.
	Fixed several bad socket crashes in magic.cpp.
	Fixed several instances where invalid objects would be left around causing later issues/crashes.
	Updated / fixed-up Spawnregions to improve functionality, speed, and all-around usability.
	Fixed SetSpawn() when object is spawned by a spawnregion, was forcing the region num down to a UI08 (which we handle them as a UI16),
		also this allows us to calculate our spawnregion (and thus not need to search through all of them in Cleanup()).
	Commands:
		Removed many commands updating other commands to take their place.
		Fixed command "regspawn" and gave it capability to pass "ALL" rather than region number to allow removal of "regspawnall"
		Removed regspawnmax
		Removed wipenpcs, moving its functionality to wipe (usage "wipe NPCS", "wipe ITEMS", "wipe ALL")
		Made wiping commands default to Admin-Only.
		Fixed an issue causing many commands not to function properly, if at all.
	Fixed display of (# items, # stones) on containers.
	Added SetDecayable( true ) to cItem::CreateBaseItem() to default items to decayable.

12/7/2003 - giwo
	Optimized and cleaned up walking code a great deal.
	Removed calcSocketObjFromChar() in favor of passing along a socket wherever possible.
	Added cMapRegion::PopulateList() to simplify region loops.
	Made CChar and CItem SendToSocket public members and made use of them in some areas.
	Removed cBoat class and locally declared the few functions it contained where needed.
	Fixed a minor bug with triggerwords.
	Fixed house creation and broke buildHouse() into several smaller functions.
	Fixed door and sign deletion upon re-deeding houses.

11/29/2003
	Made extensive use of iterators for iterating through vectors.
	Made use of .erase() and .push_back() to simplify our vector handling.
	Rewrote our command table to simplify it a bit and remove the need for two structs.
	Extensive fixes/changes to HTMLTemplates and HTMLTemplate classes.
	Fixed an issue when using CChar::SetLocation() where Dirty() was not called.
	Removed Dictionary.h from global scope.
	Moved several structs and typedefs into private members of their only calling class.
	Made use of UString::replaceSlash() in place of our current PathFix() functions.
	Removed vtables from a few more functions that had no need of virtual functions.
	Rewrote JailSystem::WriteData() to make use of an ofstream, and moved out the code specific to
		a Jail Cell into its own WriteData() function.
	Changed insta-log code so only house owners are logged out in their house, saving us some time searching for a matching house key.
	Removed Network::kr and faul as they performed the same function as cWmWorldState::KeepRun() and Error().
	Fixed an issue in loading mapregions where Items and Characters would not be properly deleted if they failed to load.
	Took our main classes out of global scope, now only files that include their headers will have access to them.
	Added CServerProfile class to remove our profiling variables from global scope.
	Simplified a bit of the handling in targeting.cpp, allowing the removal of many functions.
	Tinkered with lineofsight.cpp a bit allowing the removal of itemids and loscache from cItem class.
	Moved doorbase[] out of global scope and into door.cpp.
	Made use of cSkillClass in cPlayerAction.cpp BestSkill().

11/22/2003
	Fixed bug causing NPC's not to be created.
	Fixed a server crash upon login (caused by checking an invalid region).
	Simplified much of gumps.cpp, removing cGump in the process.
	Removed several members of cCommands and moved them to their only usage in cmdtable.cpp.
	Added packet classes CPIGumpInput, CPIHelpRequest, CPITradeMessage and CPIDyeWindow.
	Fixed a few instances where UString::sprintf() was causing a server crash (unknown as to why).
	Removed some repetitious code.
	Removed unneeded overloads of cSocket::target and cSocket::mtarget
	Combined cSocket::ShowCharName() and cSocket::textFlags.
	Made more use of strings and UString.

11/17/2003
	Added CResponse.cpp & CResponse.h
	Moved the bulk of cSpeech::Response() into CResponse() classes.
	cSpeech Changes:
		Changed genericTalking into CPTalkRequest::Handle().
		Combined sysbroadcast and consolebroadcast to sysBroadcast.
		Removed checkForVendorResponse() and responsevendor().
		Removed cSpeech class, locally declared its remaining functions.
	Removed cSpeech.cpp/.h from the project.
	Fixed up packet logging, making use of an ofstream.
	Added support for OSI TriggerWords rather than doing our own string searches.
	Made use of ofstream in several areas where we currently used fopen().
	Made RealTime inline and used it in place of duplicate code in CConsole.cpp.

11/10/2003 - giwo
	Added script creatures.dfn to store (and allow easy modification of) our creature data.
	Removed CWorldMain::initCreatures().
	Reduced redundant code.
	Fixed some minor issues.

11/7/2003 - giwo
	Implemented Object deletion queue.
	Made use of VALIDATESOCKET(s) in skills.cpp and cmdtable.cpp.
	Changed itemQueue and npcQueue to a single refreshQueue.
	Converted spawnregion[] to a cSpawnRegion vector spawnregions.
	Fixed up many classes to avoid using virtual functions unless necesarry (IE they have derived classes).
	Added ValidateObject() to take the place of NULL checks on pointers to cBO and its derivatives.
	Added CItem::Cleanup(), CChar::Cleanup() & cBO::Cleanup().
	Added cBO::Delete(), and IsDeleted();
	Added CItem::Spells() to take the place of MoreXYZ in Spellbook handling
	Removed CItem::Dirty() and CChar::Dirty().
	Removed cItem::DeleItem() and cCharStuff::DeleteChar().
	Removed cWM::TotalTownRegions() and TotalSpawnRegions().
	Removed CChar::SpellAction().
	Removed CItem::Doordir().

Oct 31 2003 - giwo
	Added struct ProwessTitle to allow more customization when dealing with prowess titles in titles.dfn.
	Added vector prowessTitles to CWorldMain.
	Added map idToItemType in cPlayerAction.cpp to remove redundant doubleclick item handling based on both ID and Type.
	Added scriptability (itemtypes.dfn in /items/ dir) for automatically associating an items ID to an item type.
	Added cSocket::TempObj() in place of addmitem and overuse of AddID.
	Changed cSocket AddX() and AddY() to SI16, made more use of TempInt().
	LoadSkills() now sets a skills madeword to "made" by default.
	Updated several areas where we loaded in scripts to make use of UString.
	UOX now reads in a skills madeword from skills.dfn rather than setting them manually in ResetVars().
	Converted skill[].madeword into a string.
	Combined skillTitle() & prowessTitle() into getSkillProwessTitle() to reduce wasted cycles in PaperDoll().
	Moved npcAct() to cTargets and renamed it to DoActionTarget().
	Changed command SETID to require only one value (IE 'setid 0x0191 rather than 0x01 0x91)
	Implimented Character update queue.
	Renamed fameTitle() to getFameTitle().
	Removed handleDoubleClickIDs().
	Removed npcAction() as cEffects::PlayCharacterAnimation() did the same thing.
	Removed std::string prowess from titles_st.
	Removed some unneeded typedefs and defines.
	Removed ResetVars() as it was no longer needed.
	Removed SleepNiceness() and CServerData::niceness as there was no need for it any longer.

	Changes to cBaseObject and its derived classes:
		Added CItem::ItemDecayed() to simplify CItem::Save().
		Removed CItem::enhanced, making use of priv variable instead.
		Removed CChar SkillItem() and Trainer().
		Removed some unused functions.
		Removed CChar may_levitate, willHunger, casting, and med variables, making use of the bools variable instead.
		Moved CChar::GetBestSkill() to cPlayerAction.cpp as BestSkill().
		Changed CChar fx1, fx2, and fy1, fy2, to fx[2], fy[2] to simplify handling.
		Changed CChar::petguarding to a cBaseObject.
		Changed CChar::ftarg, targ, trainer, and trackingtarget to a CChar pointer.
		Changed CChar::trackingtargets to a CHARLIST.
		Changed CChar::skillitem, speechItem to a CItem pointer.
		Changed CItem::Refresh() to CItem::Update() and added a pure virtual cBaseObject::Update().
		Updated CChar::Update() to accept a single socket to update to.
		Made CChar::SendToSocket() private and removed a superfluous CChar refrence.
		Added cBaseObject::LocationChanged() for npc updating (if location changes, uses CChar::Teleport(), otherwise CChar::Update() ).
		Made those functions which were only used inside the class private
		Updated cBO::PostLoadProcessing() to use the proper function based upon the object type.
		Made some members of cBaseObject pure virtuals, also changed some functions that didn't need to be virtual.

	Changes to cEffects:
		Renamed action() to PlayCharacterAnimation() and changed it to accept a CChar rather than a cSocket.
		Renamed impaction() to PlaySpellCastingAnimation() and changed it to accept a CChar rather than a cSocket.
		Renamed movingeffect() to PlayMovingAnimation().
		Renamed staticeffect() to PlayStaticAnimation().

	Script Changes:
		itemtypes.dfn - Allows players to define how items of a certain ID will be handled on doubleclick
			(IE: "forge=0x0FB1,0x1982,0x197A,0x197E" causes all items with those ID's to behave as a forge when double-clicked, unless they are given a type)
		skills.dfn - Added MADEWORD= entries to those skills which have a madeword other than "made"
		titles.dfn - Updated [PROWESS] to: minReqSkill=ProwessTitle type entries

Oct 19 2003 - giwo
	Changes to CWorldMain class:
		Added worldTimers[] Get/Set Timer(), and enum CWM_TID to group all timer values together
		Removed Get/Set NextNPCAITime, NextFieldEffectTime, HungerDamageTimer, LightTime, ShopRestock
		Removed erroredLayers.
		Removed ShowLayer().
		Removed ItemCount & CharCount.
		Removed IncIMem() as it was not used.
		Removed ExecuteBatch as no good use for it could be found.
		Renamed ItemCount2() to NextItemSerial().
		Renamed CharCount2() to NextCharSerial().
		Moved creatures[] from uox3.h.
		Moved initCreatures() from cFileIO class.
		Moved weightPerSTR to CServerData class.
		Moved secondsperuominute to CServerData class.

	Added enum ItemTypes to simplify handling of items by their type.
	Added First(), Next() and Finished() functions to cItemHandle and cCharHandle inplace of our Item / Char Count() loops.
	Added CPICreateCharacter, CPIDeleteCharacter, and CPIPlayCharacter packet classes.
	Added WEIGHTPERSTR= value to uox.ini.
	Added a cItem constructor and destructor to handle creating and deleting loscache[] and itemids[].
	Added ADVOBJ, DYEHAIR, DYEBEARD, KILLHAIR, KILLBEARD, KILLPACK, and POLY to DFNTAGS enum to support advance.dfn
	Removed a good number of function declarations from funcdecl.h and declared them locally in the files that used them.
	Removed some includes that no longer seem to be used.
	Removed index reference from PostLoadProcessing()
	Removed cFileIO->LoadNewWorld() as all the defaults set there were set by the CWorldMain constructor.
	Removed class cFileIO as most of its functions were called only by uox3.cpp.
	Removed cNetworkStuff::BatchCheck().
	Moved creation of initial player items from createChar() to newbieItems().
	Updated advanceObj() to take advantage of our DFNTAGS enum
	Changed CItem::Get/Set Type() to use enum ItemTypes.
	Fixed up some functions in movement.cpp and commented out those that are unused.
	Reorganized globals.cpp to better match with uox3.h
	Moved spells[] to CMagic class.
	Moved itemids[] and loscache[] to cItem class.

Oct 13 2003 - giwo
	Changed CWorldMain::logout to a vector logoutLocs.
	Moved some structs from CWorldMain.h to uoxstruct.h.
	Changed CWorldMain::escortRegions to a vector.
	Removed cFileIO::LoadPreDefSpawnRegions() and moved its contents to the one refrence of it.
	Removed cWorldMain::ResetDefaults() and allowed the constructor to do the work itself.
	Removed calcSocketObjFromSock() and used Network->GetSockPtr() in its' place.
	Added cSpawnRegion:: WorldNumber(), IncCurrentCharAmt(), and IncCurrentItemAmt().
	Removed handlers.h from global scope, included it in those files which used it
	Made Combat::WillResultInCriminal() public and made use of it throughout the source
	Removed VialTargetItem() and VialTargetChar(), tweaked them a bit, and made them a part of vialtarget()
	Made VialTarget() a part of cTargets class, and MakeNecroReg() a part of cSkills class.
	Removed necro.cpp from the project

	cItem changes:
		Added:   CreateMulti(), CreateBaseItem(), CreateBaseScriptItem(), PlaceItem(), CreateRandomItem()
		Removed: SpawnItem(), SpawnItemToPack(), SpawnMulti(), SpawnRandomItem()
		Rewrote: CreateItem(), CreateScriptItem(), CreateRandomItem()

	cCharStuff changes:
		Added:	CreateNPC() (and an overload), CreateBaseNPC(), CreateNPCxyz()
		Removed: AddNPC(), AddNPCxyz(), SpawnNPC(), CreateScriptNpc(), SpawnRandomMonster()
		Rewrote: AddRandomNPC(), PostSpawnUpdate().

	cTownRegion Changes:
		Updated CChar->GetRegion() and calcRegionFromXY to return a cTownRegion pointer.
		Moved locations from CWorldMain class to cTownRegion and made it a vector.
		Changed how we load in regions.dfn and handle regions.wsc to avoid having unneeded extra TownRegions.
		Updated cTownRegion::Save() to use std::ofstream to match with the rest of our save routines.

	Script Changes:
		Changed all UNDEADLIST to NPCLIST entries in digging.dfn.

Oct 04 2003 - giwo
	Removed some superfluous #includes and moved others to more appropriate places.
	Removed jail.h from global scope and included it only where it was needed.
	Added CPIGumpChoice, CPIBuyItem, and CPISellItem to handle those packets.
	Removed some functions from funcdecl.h which did not need to be in the global scope.
	Replaced getRootPack() and getPackOwner() with FindItemOwner() and an overload to simplify it.
	Removed getPack() in favor of using CItem::GetPackItem(), also made GetPackItem() a bit more useful.
	Replaced cItem::PackType with cItem::getPackType(), created enum PackTypes to simplify it, and made it more useful.
	Added some #ifndef's in header files which were missing it.
	Moved openPack() and openBank() into cSocket class.
	Moved batchcheck() into cNetworkStuff class, since that was its only usage.
	Made several members of cNetworkStuff private, as they had no reason to be public.28 Sep 2003

	Removed CItem::FirstItem() and NextItem() as they were no longer used.
	Renamed CItem::FirstItemObj() and NextItemObj() to FirstItem() and NextItem().
	Simplified setting and evaluating default values for cSocket, CChar, CItem, CMultiObj, and CBoatObj classes.
	Made wider usage of COLOUR typedef.
	Changed GENDER typedef to a UI08.
	Updated function documentation in quantityfuncs.cpp.

27 Sep 2003 - Maarc
	Removed some uox.ini options that don't have code backing
		NPCTILECHECK
		ANTILAGSAVESPERLOOP
		MAINTHREADSLEEP
		STATDELAY
		EXTERNALACCOUNTCREATION
		ENGRAVEENABLED
		SPEEDCHECKNPCS
		MSGBOARDKEEPMESSAGES
		MSGBOARDMAXMESSAGESALLOWED
		MSGBOARDMAXMSGSRESPONSE
		LIGHTMOON1UPDATE
		LIGHTMOON2UPDATE
		COMBATWRESTLINGSPEED
		COMBATMAXMELEEDAMAGE
		COMBATMAXSPELLDAMAGE
		COMBATMAXPOISONINGDISTANCE
		COMBATMAXHUMANABSORBTION
		COMBATMAXNONHUMANABSORBTION
	Note that these INI options have been removed from all code, except they will still be parsed (just ignored)
	Heavily documented each option in cServerData
	onCreate wasn't executing for PCs if HTML status was disabled
	Simplified some function naming within CServerData, as the lines were getting very long when using them
	Removed parsing of unused tags ripped out earlier

26 Sep 2003 - giwo
	Changed CChar's trackingtargets from a fixed size to a std::vector and used the maximum number of tracking targets specified in the INI
	Collapsed the CChar's timers to use an array based on the timer enums
	Removed some unused functions from CChar
	Fixed bug where CChar's PoisonStrength attribute was not being saved/loaded
	Note: Character's FlySteps property is saved/loaded, but never used - removed

25 Sep 2003 - Maarc
	cServerData renamed to CServerData, in a beginning attempt to get a consistent class naming scheme
	Removed an excess print message at startup
	Consolidation of some CServerData members into arrays, reducing number of get/set functions required

24 Sep 2003 - Maarc
	Fixed resurrecting not logged in PC character, we were making a bad assumption about NPCs and sockets
	Updated console code to get the width/height properly under windows
	Added help/commands directory to data directory, and put an ACTION.txt in there
	Fix to ScriptSection::MoveTo

22 Sep 2003 - Maarc
	Killed some warnings
	Couple of linux compilation fixes

21 Sep 2003 - Maarc
	Fixed crash bug with CPBookPage

	Modification of these submissions from giwo

		Moved statwindow() into the cSocket class
		Removed sendItem(), sendPackItem(), and openCorpse()
		Replaced the aforementioned functions with an improved cItem::Refresh(), cItem::SendToSocket(), and cItem::SendPackItemToSocket().
		Added cItem::RemoveFromSight() to better handle usage of the CPRemoveItem() packet class
		Added cPlayerAction.cpp and cPlayerAction.h to move many functions out of global scope.
		Removed cClick.cpp as the aforementioned file holds its functions now.
		Moved updateskill() into the cSocket class

	The modifications
		No cPlayerAction.h
		Many of the functions moved into cPlayerAction are put into Handle() routines of the right packets

19 Sep 2003 - Maarc
	Crash fixes
	Fixes to getTileName to work better with strings and plurality
	banlist.ini/firewall.ini now structured much like a DFN.  It expects all entries to be in the form of:

	[BANNED]
	{
	IP=x.x.x.x
	}

	The [BANNED] is non-specific, it will search through all the sections in that file
	Template banlist.ini is updated as well
	teleport.scp has been reengineered to be like a DFN style.  See example in the CVS, as it has been updated
	Updated jse_fileassociations.scp to a DFN style syntax
	Updated jse_objectassociations.scp to a DFN style syntax
	CVS versions of jse_*.scp have been updated to new style
	Reduced number of fopen() calls required by using FileIO->FileExists more
	cVersionClass converted so that most of it's methods are now static, as we don't adjust versioning at runtime
	It also means we don't actually have to create a cVersionClass object
	Console and Magic log routines now take strings instead of char *
	Dictionaries updated to use DFN style syntaxing

18 Sep 2003 - Maarc
	As a guess... more strings!
	Fixed a few minor issues here and there
	cStringTools used even less
	Contemplating replaced cMagic::Log and Command::Log with a templated log function
	Considering use of XML type of output for server logs

17 Sep 2003 - Maarc
	More strings!
	Fixed a bug with telltime
	Updated dictionaries
	More functions take strings than char * now
	Fixes to tellmessage
	Fixed bug in DictionarySpeech

16 Sep 2003 - Maarc
	More char * stuff replaced with std::string and UString
	Few minor cleanups to code, increasing readability
	Replaced CapIt and CapColour with a templated Capped function, which takes a min/max value
	Removed BuildFilePath from mapstuff.h and used UString in its place, to fix some path issues

15 Sep 2003 - Maarc
	More internal class members are now either UStrings or std::strings
	More functions updated to use std::string
	Updated HTML template stuff to use UString more
	Almost completely removed all instances of cStringTools::makeString in favour of UString functionality
	Fixed some parsing problems introduced in recent updates
	Fixed single clicking with 3D clients
	Stripped out more unnecessary / unused code
	CharBySerial behaves the same as ItemBySerial in lookups (JS funcs)
	Area commands now use UStrings, need testing
	Use of cStringTools down to less than 100 references

14 Sep 2003 - Maarc
	UString classed used in many more places
	Script/ScriptSection updated to use an ifstream rather than a FILE *
	Code reduction through use of UString and ifstreams
	Reordered some logic in functions
	Fixed a bug where PARENTRACE wouldn't work
	Fixed some bugs dealing with polymorph script reading
	Due to VC6 issues, the strToDFN table in ssection.cpp is now a series of assignments instead.  Functionally the same, just something VC6 will handle
	Binary saves ripped out in it's entirety, as there were bugs dealing with it, and a future implementation is planned
	cPBuffer renamed to CPBaseBuffer
	cPUOXBuffer and cPXGMBuffer subclassed from cPBaseBuffer - cPBaseBuffer's old Pack() routine now belongs in cPUOXBuffer
	Enables possible future encryption of xGM seperate from normal UOX packing

12 Sep 2003 - Maarc
	cStringTools is no longer created and instantiated.  It's methods are now static, as it makes clearer sense that way
	Stripped out some functions that weren't called but were transitionary from 0.7x
	Removed cAccountClass::atol as cStringTools offers methods to do that
	Fixed up logic dealing with std::string and the find method
	Few more error checks
	More warning fixes
	Unified timer code, presenting a consistent interface across both Windows and Linux
	Updates to use std::string instead of char *, to make the logic look simpler
	Added a UString class that supports stripping of whitespace, comments and other commonly used functions on strings
	Implemented some use of UString already, simplifying some of our string parsing
	VALIDATESOCKET macro added into targeting.cpp to help with the validation of socket pointers in most functions
	Added operator overloading for basic UI/SI 08,16,32 bit and std::string types for cPBuffer, to allow in future for serialisation potentials

11 Sep 2003 - Maarc
	Few more warning fixes
	Many, many, many changes to try and fix the size comparison issues that VC7.1 pops up with.  This should also make it more portable from 32/64 bit.
	The command 'cachestats now has a basic implementation
	Identified a problem with privileges and binary saves
	Made RandomNum a templated function
	Fixed possible bug with converting strings to dice, wasn't working correctly

10 Sep 2003 - Maarc
	Improved VC compatability with std::min/max
	Cleaned up quite a few warnings and size issues, as revealed by VC7.1
	This means a lot of changes to using size_t where possible

08 Sep 2003 - Maarc
	Some sign issues fixed
	Used std::min / std::max better.  VC6 issue, unsure about higher versions.  VC6 doesn't define min/max in std:: space, but _MIN/_MAX instead.
	Consequently, non VC compilers have std::min/std::max remapped to std::_MIN and std::_MAX.  Not nice, but it works
	Dead functions removed, cleanup of some logic, removed instances where comparisons were always true
	Fixed warnings associated with the running changes implemented last night
	Removed some files that aren't actually used

07 Sep 2003 - Maarc
	Fixed an issue with WalkTo/RunTo, it was aborting incorrectly with wrong number of arguments
	WalkTo/RunTo also flush the existing walk path before calling PathFind, to ensure that the new walk path is executed
	Fixed a lack of type with a const value in cScript module
	Fixed some iterator problems, increasing compatability
	Changed a #ifdef compare to __unix__ to a !defined _MSC_VER, helping out mingw compatability
	Fixed some non-msvc compile issues
	Updated some places that were doing a Refresh, which should have done a Dirty
	Slight tweaks to picking up/dropping
	Updated packet logging to help with more useful dumps
	Updated some more x++ to ++x type of code
	CMapChange renamed to CPMapChange, to reflect better naming style
	cPCharLocBody renamed to CPCharLocBody, to reflect better naming style
	Debug message in WalkTo/RunTo when in debug compile
	Fixed a MethodError problem with WalkTo/RunTo occurring when it shouldn't
	Following packets now have log routines:
		CPMapChange
		CPCharAndStartLoc
		CPCharLocBody
		CPOpenGump
	Updated CPOpenGump so that it's no longer a fragmented packet class, requiring FlushBuffer
	Removed a dead function (itemmenu) that's never used
	Removed dead SE function RunTo, as it's now a character method
	Fixed WalkTo/RunTo as methods - the pathfinding was never doing anything.  Used new npc wander mode of 6, which will purely follow the path
	Those NPCs that are supposed to be running really will be now

06 Sep 2003 - Maarc
	The bounce routine flags the bouncing object as dirty
	---- After preprune tag
	Removed heartbeat and wilderness tags from uox.ini
	Removed partmsg from uox.ini as joinmsg sets the same value
	Removed uoxbot from uox.ini
	Removed lagfix from uox.ini
	Removed checkmem from uox.ini
	Removed combatallowcriticals from uox.ini
	Removed fixedlightlevel from uox.ini as it is unused (also removing the 'light command, as it was the only thing that used it.  Set, but never read)
	Removed scriptsectionheader from uox.ini - it was transitionary only, if you haven't changed over by now, you never will
	Removed an extra startgold entry from uox.ini code
	No longer parse old 0.7x server.scp types
	Fixed Bug: Seconds per UO minute used, but never actually read from the INI file.  Now read/written from/to file.
	Added Console support to dump ini file lookup offsets without running the server.
	Updated console 'V' command to reflect the upcomming pruning of the unused INI tags.
	Fixed a crash bug with onDropItemOnNPC, stupid typo problem
	Updated some setcont code to deal better with layer 0 items, should help with secure trade better
	Change to onAISliver JS event - if js returns true, then server doesn't do normal AI check.  if js returns false, server goes through it's normal routine
	Added some more #ifdef code for some basic boost use - trouble with filesystem currently
	Lots of whitespace updates
	Allowed scripts to be attached to regions, not just items/characters - use SCRIPT tag in the DFN for the region.  Currently supports onEnterRegion and onLeaveRegion (same params as the character version)
	Minor rework of some of the logic in trade code, may or may not help
	Playervendor deed altered to spawn [playervendor] rather than [2117]
	Removed excess PathFix function in cServerDefinitions
	Should be able to browse player vendor packs without a snooping check
	Minor issue with loading multis, was erroneously reporting DeedName as an unknown tag
	Removed some unused dead code dealing with gumps
	Added atWar property to JS characters
	Hid most of cSocket's members
	Added BytesSent/BytesReceived methods to cSocket
	Implemented WalkTo and RunTo as character methods.  Takes 2 (object + maxsteps) or 3 (x, y and maxsteps) parameters
	Included the js32.h, and js32.lib files to the source tree. TO help ease *nix users

30 Aug 2003 - Maarc
	Updated InternalPoll for speech, which should solve some compatability issues, and solve delayed speech from not occurring.
	Added some batch files for windows which should help with deployment in future.  They are found in the root, in uox3
	There are 3 predefined templates
		pureinstallcopy		copies data and built binaries
		buildanddatacopy	builds a release executable and does same as pureinstallcopy
		doall			same as buildanddatacopy, but copies source as well
	Each must be called like
		doall c:\app\uoxtest
	The batch files accept a parameter which dictates where the files are to be copied to.
	From there, simple zips can be made.
	Work continues on resurrecting a win32 installer, and communication with Rynet will see a similar process created for Linux.

29 Aug 2003 - Maarc
	Warning and scope fixes only

22 Aug 2003 - Maarc
	Added Empty OnStartup/OnShutdown events( to be expanded upon later )
	Added a JSE class wrapper around UOX3 Account instance to provide access to methods
	Implemented CAccountClass wrapper
	   Created .AddAccount(name,pass,email,flags) to add an account to the server
	   Created .DelAccount(name) or .DelAccount(accountid);
	   NOTE: These are pretty self explanitary.
	Updated JS implementation of wrapper for cAccountClass.  No longer var i = new CAccountClass syntax, it exposes a global object "Accounts"
	With minor tweaks, managed to get Slasher's account editing stuff to work


13 Aug 2003 - Maarc
	Fixed a crash bug with multis and deeds - the deed property wasn't always being set correctly and could crash on worldsave
	Updated deed property of cMultiObj to be a std::string rather than a const char *, to avoid pointer issues as it's used infrequently
	Added ExecuteCommand as a character object method (Example: pUser.ExecuteCommand( "add 0x04a9" ); )
	Minor whitespace fixes
	Changed MethodError of CChar_ExecuteCommand to the right func name, was SysMessage
	Removed old standalone ExecuteCommand function from JS engine, so only character method is available
	Updated version number

11 Aug 2003 - Maarc
	Fixed a bug where insufficient templates in the HTML template system would cause a crash at runtime
	Added 'setspawnobj and 'setspawnobjlist commands
	Fixed a bug with tweaking items where the text strings were incorrect at the end of the property list
	Fixed a bug with tweaking items where there was no text string at the end of the property list
	Added spawnobj/spawnobjlist property to tweaking of items
	Whitespace updates
	Fixed typo in debug print of CChar_UseResource
	Updated dictionaries in the tree


07 Aug 2003 - Maarc
===========
	Overhauled HTMLTemplate Class to actually handle multiple templates correctly.

	Templates Supported at this time are :

	ETT_ALLTEMPLATES : Update aLL templates found in default_templates.dfn
	ETT_GMSTATUS     : Update the GMSTATUS template
	ETT_GUILD        : Update the GUILD template
	ETT_OFFLINE      : Update the OFFLINE template(no player functionality yet)
	ETT_PLAYER       : Update the PLAYER template(no guild functionality yet)
	ETT_ONLINE       : Update the default server STATUS template


	Supported template Types:

	STATUS           :
	PLAYER           :
	GUILD            :
	GMSTATUS         :
        OFFLINE          :

	NOTE: The format and extention of the template files has changed slightly
	      Here is a complete default templates example (Filename: default_templates.dfn).

	//o-------------------------------------------------------o
	//| QUick note: TYPE must always be the first tag found in
	//|             a block.
	//o-------------------------------------------------------o
	[DEFAULT_STATUS]
	{
	TYPE=STATUS
	NAME=Server Status Template
	UPDATE=5
	INPUT=C:/uox3/dfndata/html/online.htf
	OUTPUT=D:/mywebserverdir/serverstatus.html
	}

	[DEFAULT_PLAYER]
	{
	TYPE=PLAYER
	NAME=Server Offline Template
	INPUT=C:/uox3/dfndata/html/player.htf
	OUTPUT=D:/mywebserverdir/player.html
	}

	[DEFAULT_GUILD]
	{
	TYPE=GUILD
	NAME=Server Guild Template
	UPDATE=5
	INPUT=C:/uox3/dfndata/html/guild.htf
	OUTPUT=D:/mywebserverdir/guild.html
	}

	[DEFAULT_GMSTATUS]
	{
	TYPE=GMSTATUS
	NAME=Server GameMaster Status Template
	UPDATE=5
	INPUT=C:/uox3/dfndata/html/gmstatus.htf
	OUTPUT=D:/mywebserverdir/gmstatus.html
	}

	[DEFAULT_OFFLINE]
	{
	TYPE=OFFLINE
	NAME=Server Offline Template
	INPUT=C:/uox3/dfndata/html/offline.htf
	OUTPUT=D:/mywebserverdir/serverstatus.html
	}

	EOF

	NOTE: At all time in any template block the first tag MUST be the TYPE tag.

	A detailed list of supported template tags will be forth comming.


05 Aug 2003 - Maarc
===========
	Fixed PC dying issue, not changing to ghost and not turning to gray
	Reinstated terminating NULL with regards to CPOpenBuyWindow, which should hopefully restore pricing in 3D client

03 Aug 2003 - Maarc
=======
	Fixed issue with delete characters. Now characters should delete correctly, and not list unknown
	values, and erroneous data.
	Fixed an issue with CPIGumpMenuSelect, which was getting radio buttons wrong
	Fixed an issue with BuyFrom, where the logic was backward... should be more like pUser.BuyFrom( NPC ) than NPC.BuyFrom( pUser )
	Fixed similar issue with SellTo
	Added "movable" to area commands on request of Xuri
>>>>>>> 1.1.2.22

02 Aug 2003 - Maarc
	Updated CPItemsInContainer so that it will work faster and should work better with vendors
	Updated CPOpenBuyWindow to work better with vendors, and go faster
	Added AoS weapons and LBR-monster weapons (Xuri)
	Vendors work fine in 3D client but not in 2D
	Added a packet specific log routine to CPOpenBuyWindow
	Updated cSocket and other routines to allow for packet specific logging on receive
	Sideeffect of that is that non-packet classes save data already logged for variable length packet
	Implemented Log() routine for CPIFirstLogin, CPISecondLogin, CPIServerSelect, CPIClientVersion and CPIUpdateRangeChange
	Whitespace updates
	setid now has character body restrictions, and is the same as 'poly, which has been upgraded to 0->0x7CF
	Removed JS functions due to equivs
		GetTarget
		SetTarget
		CalcSockFromChar
		CalcDefense
		CalcAttack
		CalcCharFromSock
		GetFlag
		GetTown
		SetTown
		GetRegion
		SetRegion
		VendorBuy	-> BuyFrom method of Char/socket
		VendorSell	-> SellTo method of char/socket
	Added flag property to characters in JS (deals with criminal, murder and so on, read only property)
	Migrated base JS functions to character/item methods
		FinishedItemInCont	-> FinishedItems
		FirstItemInCont		-> FirstItem
		NextItemInCont		-> NextItem
	Dismounting a creature will have the creature face the same way as you
	onDropItemOnNpc event implemented
	First executes for item and if item doesn't bounce, executes for NPC (so item can override bouncing)
	scripts must return a value between 0 and 2
	0 == bounce
	1 == don't bounce, use code
	2 == don't bounce, don't use code
	Updated mounts to support rest of LBR/AOS mounts

01 Aug 2003 - Maarc
	Fixed issue with delete characters. Now characters should delete correctly, and not list unknown values, and erroneous data.
	CChar's attacker property was a CHARACTER, not a CChar * - This lead to mixed ideas of what it's values are
	Changed attacker property to CChar *, which should provide some minor performance benefits
	Fixed a bug with stealing which would flag an index error on failure when not in combat
	OpenURL function on a socket is now enabled
	Closed a minor memory leak with the JS OnTalk event
	Updated version number
	Fixed an issue with NPC response (bank and other commands were not working) - Also affected JS speech
	Found an issue with the vendor buy list.... not working correctly, unsure as to the reason why.  All items are (null) at 0 gp, though icons are fine

31 Jul 2003 - Maarc
	DoStaticEffect (JS function) was both a standalone method (DoStaticEffect) and item/char method (StaticEffect)
	Removed standalone implementation of DoStaticEffect, as it wasn't updated to current implementations and one impl should be used
	Fixed a bug with JS StaticEffect method that would make it not work correctly with items
	JS method table for chars updated to reflect that StaticEffect takes 3 parameters, not 4
	Fixed a crash bug when items tried to talk (via JS or not)
	Some more basic implementation (ifdef'd out) of using boost tokenisation
	Whitespace cleanups
	CPObjectInfo caused crash bug when firefield was cast, fixed
	The criminal() function would cause a server crash if the thing going criminal was an NPC (symptom of EV's crashing server)
	Removed JS onUsage event, and updated onUse in its place
	onUse now requires a return value of either true or false in the script
	if return value true, then it continues on executing with hard coded implementation
	if return value false, then no hard code is executed
	Fixed 'make so that 'make player would work again
	Items can now use the third optional parameter of StartTimer in JS, which enables to call back into the currently executing script
	Updated SetCont so that if it fails to equip, it prints out serial and layer, and resets contObj properly
	Fixed crash with killing characters and corpse clothing
	onUse event fires for a door when it is used, allowing for greater customisation of whether the door can be opened or not

24 Jul 2003 - Maarc
	cPBuffer now has an internal packed buffer, as well as an internal Pack() routine
	cSocket::Send adjusted to use the cPBuffer packed buffer/unpacked where possible
	cPBuffer's packed implementation means that if the packet is sent to multiple sockets, only one pack is needed
	And consequently, runtime performance should be slightly improved (only affects removeitem sort of packets)
	Updated version number

	getTileName updated to behave like in singleClick()
	singleClick now calls getTileName for name lookups rather than basically reproducing the code
	singleClick slightly optimized to only do a character lookup if required
	whitespace cleanups

20 Jul 2003 - Maarc
	Fixed long packet problem
	Fixed possible problem with create skill window
	Converted more things to use CPSendGumpMenu
	Fixed item refresh bug for items created after server load
	Optimized code size for cGuild gumps a touch
	SendVecsAsGump uses CPSendGumpMenu - note, we should be trying to get rid of all uses of SendVecsAsGump
	Commented out a call to Gumps->Open() that locks up later clients (see cstatstarget in cTargets)
	Optimization note for CPSendGumpMenu reuse - look at moving some of the processing from Finalize() to AddCommand()/AddText()

19 Jul 2003 - Maarc
	Fixed a problem with WhichLoginPacket, as it would ignore some valid packet IDs
	Implemented CPSendGumpMenu, an attempt to write a packet class for 0xB0 outbound
	CPSendGumpMenu works for part of wholist and is implemented for 'howto
	However, the size of the packet is bigger than our largest buffer.... and that means that it tramples all over memory
	A fragmenting version is implemented, but the client is more likely than not to lockup
	Real answer?  Crypt and send a buffer big enough to hold the entire packet

18 Jul 2003 - Maarc
	Created a WhichLoginPacket function, to deal specifically with logins only
	WhichLoginPacket will throw an exception if it receives a request that it knows nothing about
	This request is caught and swallowed, via new cSocket::FlushIncoming

17 Jul 2003 - Maarc
	Reduced a number of flush locations
	Books updated to packet classes
	Fixed a bug with reading predefined books
	If cannot wear an item, returns failure (only prints in debug mode)
	Removed some commented code
	Updated spellbooks to use packet classes
	Slight spellbook speed up
	Removed some dead variables
	Some messages now only print in debug mode
	Packet 0x98 (allnames 3D) moved to packet class
	Game server list moved to own packet class
	Added Add() method to CPItemsInContainer
	Turned outbound 0x66 into CPBookPage
	Turned outbound 0x6F into CPSecureTrading
	UseDoor SE function now supports objects not indexes
	MAXLAYERS reduced to 30
	Fixed crashes related to system speech and npcs
	Edited changelog to explicitly mention the month, not using a numeric (not everyone is an American)
	CPDrawContainer model changed from SI16 to UI16
	Updated to version 1g

	Addendum
		Replaced almost all instances of a++ and a-- code with ++a and --a, without breaking semantics
		Implemented a basic boost tokenisation on account parsing of v3 files (ifdef'd out by default)
			Saves approximately 100 lines of code and is more readable

15 Jul 2003 - Maarc
	Should fix deleting characters

30 Jun 2003 - Maarc
	RefreshItem() changed to Item->Refresh()
	Implemented RefreshItem queueing
	talking/unicodetalking merged into generictalking
	Speech (both unicode and non-unicode) converted to a packet based system
	Much greater compliance with packet packing rules
	Very simple handler for NPC context menus (UOXClassic as inspiration)
	NPC context menus turned on by default during login
	All-names 3D basic implementation (for testing)
	Extended status window
	talk, talkAll, emote and emoteAll are character methods
	itemTalk is a method of an item
	sysmessage is a method of cSocket
	Removed DefBase object and used constants for defaulting instead
	Added ApplySection to Items and Chars in the JS engine
	Split SpawnItem into CreateDFNItem and CreateBlankItem
	Campfires now have 1 HP forced
	OnSpeech event altered. Forces script to return a value. (0 == NPCs/PCs
	see the speech, 1 == PCs see it, 2 == no one sees it, defaults to 0)
	Female bit specified on CPExtMove if person is female
	Yellow bit specified on CPExtMove if full health
	Command handlers no longer need the offset value, as speech is unified
	Books have partial packet class implementation
	Better use of BASEITEMSERIAL and INVALIDSERIAL
	CChar::SendToSocket implemented as packet class
	target() and mtarget() are cSocket methods
	Added pragma note for start of Move Guildstone functionality location
	structure cleanups/movement
	cCommands::MakeShop streamlined
	Prints to console when a fragmented packet is attempted
	Changed a dynamic memory allocation to static in cSocket::Send
	cGump::OPen converted to use packet class
	Addmenu no longer has nomove tag
	Spellbook start converted to packet class
	CPExtMove now handles flag setting
	Streamlined startChar routine
	I've removed these JS functions (as they have attrib or method equivs)

		Gump_CreateGump
		Gump_AddButton
		Gump_AddText
		Gump_AddRadio
		Gump_AddPage
		Gump_AddPicture
		Gump_AddGump
		Gump_AddBackground
		Gump_AddTextEntry
		Gump_AddCheckbox
		Gump_Delete
		Gump_SendToSocket
		GetName2
		SetName2
		GetLowDamage
		GetHiDamage
		SetAtt
		GetAtt
		SetDef
		GetDef
		SetDecayable
		IsDecayable
		IsCriminal
		IsMurderer
		IsInnocent
		MakeCriminal
		MakeInnocent
		GetGender
		SetGender
		TurnToward
		DirectionTo
		GetRaceName
		SetRaceName
		IsPlayerRace
		GetRacialGenderRestrict
		GetRacialArmourClass
		GetRaceLanguageSkill
		GetRacePoisonResistance
		GetRaceMagicResistance
		GetRaceVisibleDistance
		GetRaceNightVision
		GetClientVersion
		GetClientType
	These have been migrated to newer methods:
		CastSpell (chars)
		AddSpell (chars)
		SpellFail (chars)
		ApplyRank (items)
		RequiresBeard (races)
		RequiresNoBeard (races)
		CanRaceWearArmour (races)
		IsValidHairColour (races)
		IsValidSkinColour (races)
		IsValidBeardColour (races)
	SpawnItem has been split into CreateDFNItem and CreateBlankItem.
	A new object type, UOXCFile, has been made.
		eg var mFile = new UOXCFile;
	It has the following methods
		Open
		Close
		Write
		Read
		ReadUntil
		Free

	and properties:
		pos (read/write)
		length (read)
		eof (read)


25 Apr 2003 - giwo
Added:
	Added enum distLocs to simplify distance checking (to avoid confusion over what a certain distance would be IE 1 tile away = 2)
	Added support for setting an items container in JavaScript (object.conainer = newcontainer)
	Added string support for house.dfn allowing house items and house deeds to be strings, not just numbers
	Added new cStringTools class to replace makeNum() with type-matching string-to-number functions
	Added new type of command func, CMD_SOCKFUNC, this will be used to define those commands which need a socket passed to it
	Added Get/Set wrappers for cmd_offset and made it a private member of the cCommands class
	Added cSpeech class and cSpeech.h to remove the speech functions from global scope
	Added support for ADDITEM item,amount in the itemmenu's (note if you specify an amount it will override the default amount setting of that item)
		-Same support for PACKITEM in newbie.dfn and npc dfn's and ADDITEM in carve.dfn
	Added EQUIPITEM and PACKITEM in place of ITEM in advance.dfn, note PACKITEM has support for amounts, EQUIPITEM will attempt to equip the item on the character
Changed:
	Cleaned up applyNPCSection and added support for reading in HP tags
	Fixed issues with reading in certain tags from NPC-defs
	Made console output hexadecimal numbers where applicable also reduced signed/unsigned mismatches in sprintf's
	Moved CChar::carve and CItem::carve into cBaseObject::carve, and changed it to an SI16
	Changed CItem::good to an SI16
	Changed CItem::glow to a UI32 possibly fixing some issues where it would not read in properly
	Fixed deletion of house items upon re-deeding a house
	Fixed commandlevel overrides in command.dfn to read-in properly
	Overhaul to cCombat to make way for future split of Players and NPC's
	Created an enum for aiTypes allowing easy refrence of NPCAI
	Created a TargetIDs enum to allow easy refrence of target-based commands when calling target() and using cTargets::MultiTarget()
	Moved target() and its overloads to targeting.h
	Updated many timers that were using an SI32 to use TIMERVAL reducing Signed/Unsigned mismatches
	Moved safeCopy() into the cStringTools class, also moved numtostr and renamed it makeString()
	Fixed up command_set and AllSetTarget() to remove the need for mstring
	Moved gettokennum() into the cStringTools class as GetToken() and made better use of it
	Change cServerData::SetServerStartPrivs() to a UI16
	Changed UI08 CChar::Get/Set Priv() & Priv2() into UI16 Get/SetPriv()
	Fixed areas where ifdef'd code had never been updated to make use of new CChar & CItem handling
	ITEM tags in npc dfn's changed to EQUIPITEM, be sure to update your scripts
	Changed JS function CalcSocketFromChar() to return an object
	Moved findMulti() and inMulti() to findfuncs.cpp and removed inMulti() from global scope
	Changed worldsaves to output many values in hex format
	Fixed some issues in cServerData where settings were not initialized upon creation of the class
	Many type mismatches fixed in cServerData along with the resizing of many variables in the class greatly reducing the total memory it uses
	Fixed a crash bug in combat when attempting to calc the defense covering a certain layer
	Fixed several magic commands which had unused variables sent to them
	Moved comm[CMAX] to the cCommmands class and added Get/Set wrappers to it
	Moved makenumber() to the cCommands class and renamed it to GetArgument()
	Minor fixes / tweaks to the cBooks class
	Fixed some container mismatches
Removed:
	Functions:
		CSocket::currchar & CSocket::addid5
		Removed item_test and added CItem::CheckItemIntegrity() in its place
		Fully depreciated and removed makeNum() and its overloads
		UOXSOCKET calcSocketFromChar() overloads
		calcSocketFromSockObj()
		Legacy calcCharFromSer() and calcItemFromSer() overloads
		UseHairDye() and moved all contained code to its' one usage
		enlist()
		CChar: Murderer(), Skin2(), ID2(), xID(), xSkin() and many unused overloads
	Commands:
		'USE' Because it has not had supporting code for it for quite some time
		'CTRIG','ITRIG', and 'TTRIG' As they were remnants of the old trigger system
		'SETHEXMOREXYZ' Because SetMOREXYZ will support both HEX and Decimal
		'SETSPEECH' Because it did nothing
		'TILEDATA' Because 'SHOWDETAIL does the exact same thing
		'XSBANK' Because 'XBANK does the exact same thing

	regions.h and classes.h from global scope and included them in those files which actually used them
	utilsys.cpp and utilsys.h from the project as they were not used anywhere
	mstring.cpp and mstring.h from the project
	Many unused and duplicate global includes
	Many unused #defines and const's

19 Mar 2003 - giwo
Added:
	JS Get/Set "vulnerable" handlers for character properties (Abaddon)
	willHunger with Get/Set HungerStatus() wrappers to CChar class (can now selectively stop a character/creature from continuing to hunger)
	JS Get/Set "willhunger" handlers for character properties
Changed:
	Linux compile fixes (thanks Malketh)
	Hash.h warning fixed (thanks Philantrop)
	Fixes to getRootPack() and getPackOwner()
	Removed many #includes from the global scope, including them in the specific files that need them
		This should greatly reduce compile time and filesize, along with the need to recompile after altering most headers
	Removed the linux ifdefs around typedefd function declarations, this should work with gcc 3.2
	Moved global loading functions into a new cFileIO() class to take them out of global scope
	Fixed an issue causing items to not be sent to the client (thanks Malketh)
	Moved some global structs into the CWorldMain class
	Fixed a bug causing a crash on character / item creation
	Moved all effects stuff into its own class to take it out of global scope
	Changed the variable CChar::region to CChar::regionNum to avoid conflicts with the cTownRegion region[] indexes
	Moved getbestskill(), isHuman(), and inDungeon() into the CChar class to remove them from global scope
	Took npcSimpleAttackTarget() out of global scope
	Rewrote restock() to make use of restockNPC()
	Changed the typedef'd iterator in hash.h to HASHITERATOR to kill a Linux warning
	Renamed cEffects::soundeffect() to PlaySound() and removed unneeded overloads
	Fixed a bug causing executebatch to be set with locationcount data
	Rewrote cEffects::bgsound()
	Documented sounds.cpp
	Misc minor cleanups / fixes
Removed:
	sendItemsInRange() (CChar::Teleport() does the same thing)
	Many #includes that were not being used
	deathMenu()
	respawnnow() and moved all of its code into command_respawn()
	one instance of cEffects::scpSoundEffect() and renamed the other to PlaySound()

13 Mar 2003 - giwo
Changed
	Fixed an issue allowing the server to not have a dictionary.ZRO (which would cause a crash when a dictionary entry was called with no language)
	Fixed an issue causing the server to puke when it attempted a restart
	Moved SpawnRandomItem() into cItem class
	Moved SpawnRandomMonster() into cCharHandle class
	Broke necro.dfn into fishing.dfn and digging.dfn
	Made better use of SpawnRandomItem() and SpawnRandomMonster()

12 Mar 2003 - giwo
Added:
	CPOpenGump and CPSpeech packet class to remove some global vars (Note these are pretty basic classes and someone
		with a better understanding of how we handle sending/recieving packets could probably expand these to make better use of them)
Changed:
	Moved many global vars into the CWorldMain() class
	Cleaned ResetVars() in uox3.cpp as ResetDefaults() in CWorldMain() now handles much of that
	Added a check to ensure text wasn't sent twice in talking(), should fix double-speech
	Cleaned up cmdtable.cpp removing a couple duplicate entries, etc
	Changed target() to only require 4 values (as the first two were always 0 and 1)
	Removed many unneeded typedefs and globals
	Went through cServerData() and noted unused server.ini entries
	Moved title1(), title2(), and title3() to cClick.cpp since that is their only usage, made use
		of MAX_TITLE to ensure we wouldn't overrun the buffers, and renamed them matching what title they were

11 Mar 2003 - giwo
Changed:
	Fixed a potentially very serious bugs with how containers were being set upon loading the world
	Fixed possible re-adding of weight to containers and characters at load
	Fixed a bug causing equipped items that were not weapons to take damage in combat
	Minor cleanups / warning fixes / Linux compatability issues (punt)

07 Mar 2003 - giwo
	Overhauls/Additions/Major Changes
	Changed:

	Tweaks/Object Conversions/Misc Small Changes
	Changed:
		Changed CItem::Get/SetLayer() to a UI08
		Fixed a bug in speech causing you to see your own text twice
		Fixed a nasty crash bug caused by changing an items layer
		Fixed a bug causing NPC's to always be the first attacker

	Removed:
		CChar::Fame2() and CChar::Karma2()
		CChar::Stamina2(), CChar::Mana2()


05 Mar 2003 - giwo
	Overhauls/Additions/Major Changes
	Changed:
		Armor DEF system overhauled to match OSI system

	Tweaks/Object Conversions/Misc Small Changes
	Changed:
		-Updated Hash Table Remove() calls to remove unrefrenced parameter "index"
		-Changed cSocket::Get/SetDWord() to a UI32 to fix problems checking it against INVALIDSERIAL and storing large serial numbers
		-Changed cSocket::AddID() to a UI32 for the same reason as above
		-Changed cSocket:::Get/SetWord() to a UI16 to fix possible problems storing ID's
		-Fixed up calcStealDiff() to match new weight system
		-Minor updates to CPStatsWindow to match the new Armor DEF system and Weight system
		-Fixed calls to getTileName() so the names container was set with MAX_NAME
		-Fixed up getFieldDir() using direction typedefs
		-Changed Get/SetMagic() to Get/SetMovable()
		-Cleaned up some unrefrenced params
		-Changed some int's to UI16's in books.cpp
		-WorldSave Changes:
			-XYZ and worldnum to Location=x,y,z,worldnum
			-HiDamage and LoDamage into Damage=hidamage,lodamage
			-Strength,st2,Dexterity,dx2,Intelligence,in2 changed to Strength=str,st2, Intelligence=int,in2, Dexterity=dex,dx2
			-DWord0-3 changed to DWords=0,1,2,3
			-FX1,FY1,FX2,FY2,FZ1 changed to WanderArea=FX1,FY1,FX2,FY2,FZ1
			-MoreX,MoreY,MoreZ changed to MoreXYZ=morex,morey,morez
			-More,More2 changed to More=more,more2
			-Type,Type2 changed to Type=type,type2
			-Light,Rain,Heat,Cold,Snow,Lightning changed to RaceDamage=Light,Rain,Heat,Cold,Snow,Lightning
			-Fame,Karma,Kills changed to Reputation=fame,karma,kills

	Removed:
		Removed all smoking stuff, as it's nothing but a waste of code

26 Feb 2003 - giwo
	Overhauls/Additions/Major Changes
	Changed:
		-Complete rewrite to the Weight system
			-Weight is more permanent, removed need to recalc it constantly
			-Packs now show the weight of themselves and all their contents
			-Packs now have a weight limit (currently hardcapped to 400, should make it based on type of container and possibly scriptable)
			-All items use the weight value given to them in the scripts unless the entry is 0 in which case they pull weight from the MUL's
			-Better handling of overloaded for teleport / recall / walking
			-Weight will max out at 65535 stones and can not go lower than 0 stones
		-Items container is now set as a cBaseObject

	Tweaks/Object Conversions/Misc Small Changes
	Changed:
		-Fixed up itemsfx() and renamed it to itemSound(), now better handles Gold sfx and where an item was dropped (ie in a pack or on the ground)
		-Cleaned up goldsfx() and renamed it to goldSound()
		-Many fixes to get/drop/wear/packItem functions
		-Minor fixes/cleanups in movement.cpp
		-Fixed a worldsave crash with tamed creatures
		-Pressing 0 in console reloads items as well as everything else
		-Made dagger usable for carve again
		-Fixed a horse mounting distance check
		-Noted (and in some cases fixed) unrefrenced variables throughout the code
	Removed:
		-Removed calcLastContainerFromSer(), as the Get/SetCont() changes made it superfluous


18 Feb 2003 - giwo
	Overhauls/Additions/Major Changes
	Added:
		-Added cItems::menuAddItem() to handle adding items from the add menu
		-Added handleCooking() in place of cSkills CookMeat(), MakeDough(), and MakePizza()
		-Added PlayInstrument() in place of PlayInstrumentWell() / PlayInstrumentPoor()
		-Added cSkills::doStealing() to take place of repetitious code in RandomSteal() and StealingTarget()
		-Added objInRange() functions in place of charInRange()/itemInRange() funcs

	Changed:
		-Converted inscribe.gmp to inscribe.dfn and used NewMakeMenu() in favor of the old make menu system
		-Updated GetMagic() == 3 calls to IsLockedDown() calls (as that is all it should be used for)
		-Fixed up all IsLockedDown() calls, resources that are LockedDown can NOT be used, even by GM, until released
			-Also note, items that should be usable if locked: Skill items (looms, training dummies, etc, Recall runes)
		-Moved the two functions from newbie.cpp to pcmanage.cpp and removed newbie.cpp from the project
		-Moved action() and impaction() to effects.cpp
		-Moved isHuman() to npcs.cpp
		-Where possible made functions that were part of classes private
		-Made use of cCombat::getWeaponType() in doubleClick() to centralize searching for weapon ID's
		-Updated CDictionary to make use of IsValid and added wrapper functions for it
		-Moved keyInPack() to doors.cpp and made better use of it
		-Added support to NpcTalk for variable arguments
		-Added support to NpcTalkAll for variable arguments
		-Changed itemmessage() to objMessage() and added dictionary support to it
		-Went through and added language support to Dictionary->GetEntry() calls anywhere possible (note, should NOT use socket-based languages for: Console, Broadcasts, Item/Region/Char Names, Anything else?)
		-Broke doubleClick() into 3 functions, doubleClick(), handleDoubleClickTypes(), and handleDoubleClickIDs() to allow quicker viewing / editing
		-Cleaned up unneeded variables in the three aforementioned functions
	Removed:
		-Trashed im.cpp/.h, MakeMenuTarget() and the rest of the old make menu system
		-Removed Gumps directory (as it is now unnecesarry)
		-Removed getCharDist() and getItemDist()
		-Removed make_st and cSkills::CalcRank()

	Tweaks/Object Conversions/Misc Small Changes
	Changed:
		-Removed iSGM() checks from all Dist functions, as it would cause wierdness in many areas of the code (Combat, for example)
		-NPC Movement issues addressed
			-Creatures following move faster (not just tamed)
			-Wander direction changes randomly
			-NPC movement slowed down alltogether
		-Attack flagging issues addressed/worked on
		-Combat bug causing you swing but never hit when diagonal from enemy fixed
		-Decay timer reset upon dropping an item on the ground
		-Cleanup of cItem::DecayItem()
		-Fixed an issue causing creatures to get stuck turning around when nearly dead
		-Fixed up amount functions to allow for UI32, should allow statwindow to properly display up to 4billion+ gold on a character, as well as allow high-cost item buy/sells
		-Changed CChar tailitem, GetTailItem() and SetTailItem() to an object pointer
		-Now can only mount a creature if it is tamed and owned by you
		-Changed GetAdvObj to a UI16, shouldn't need more than 65535 Advance.dfn entries
		-Get/SetSpawn() now check for INVALIDSERIAL instead of 0
		-Updated CChar::Get/SetSmeltItem() to an Object pointer
		-Changed UI32 ItemPtr() in tempeffects to cBaseObject *ObjPtr()
		-Changed cSocket::AddMItem() to a CItem
		-Used GetItemObj(), GetOwnerObj(), GetSpawnObj(), and GetMultiObj() where possible
		-Cleaned up CurrcharObj() usage
		-Changed CSkills::Snooping() to use an Object pointer rather than a Serial
		-Changed tempeffect() to use a CItem call instead of ITEM (and removed it alltogether from its CChar overload)
		-Changed nVialID in necro.cpp to now make use of cSocket::AddMItem() to allow an object pointer
		-Changed cTownRegion::DisplayTownMenu() to use an item pointer
		-Minor tweaks to Rank system
		-Fixed House Lockdowns, Items are now added to the Multi's LockDown list
		-Fixed a WorldSave crash caused by tempeffects, by adding teffect_st constructor
		-Possibly fixed MultiCaching bug, where container should have been UI32
		-Updated StoreItemRandomValue(), fixing some possible signed/unsigned issues
		-Updated calcLastContainerFromSer() to return a cBaseObject pointer
		-Fixed issue in checktempeffects() causing ITEM timers not to function
		-Changed CItem *Get/SetTailItem() to SERIAL Get/SetSkillItem()
		-Ensured SkillItem was being set back to INVALIDSERIAL after use
		-Fixed up cGumps::choice()
		-Fixed bug when npc attacked causing the emote to display incorrectly, also added "creature" is attacking you! emote for target only
		-Same fixes for players attacking
		-Updated npcEmoteAll() to handle variable arguments and updated calls to match
		-Used Socket-based language calls in Dictionary-GetEntry() wherever possible
		-Caught some missed text and put them in the dictionary.
		-Documented functions in speech.cpp
		-Made use of objInRange() wherever possible
		-Many signed/unsigned mismatch fixes
		-Minor optimizations and code cleanups

	Removed:
		-Commented out old Alchemy stuff (alchemy.dfn in /create/ still needs work)
		-Removed unused respawntime global
		-Removed some unneeded typedefs
		-Removed many unnecesarry uses of char temp[]; sprintf( temp, Dict ); function( temp ); in favor of function( dict )
		-Removed unnecesarry overloads for the following functions:
			SpawnItem()
			GetItem()
			CItem::SetSpawn()
			CChar::SetSpawn()
			GetMulti()
			GetOwner()
			SetOwner()
			openPack()
			decItemAmount()
			CItem::ReleaseItem()
